a4j: commandLink не работает, когда внутри списка - PullRequest
0 голосов
/ 08 ноября 2011

Ссылка на этот вопрос h: commandLink не работает, когда внутри списка

У меня такая же проблема в моем приложении.Я хотел бы попробовать bean-компонент ViewScoped, но из-за использования Spring 2.0 у меня нет возможности поместить его в View Scope.Любые другие обходные пути, я мог бы попробовать.

Было бы неплохо, если бы вы могли дать мне подсказку.

1 Ответ

0 голосов
/ 09 ноября 2011

Вы можете портировать область просмотра на пружину:

package com.yourdomain.scope;

import java.util.Map;
import javax.faces.context.FacesContext;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.config.Scope;

public class ViewScope implements Scope {

    public Object get(String name, ObjectFactory objectFactory) {
        Map<String,Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();

        if(viewMap.containsKey(name)) {
            return viewMap.get(name);
        } else {
            Object object = objectFactory.getObject();
            viewMap.put(name, object);

            return object;
        }
    }

    public Object remove(String name) {
        return FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(name);
    }

    public String getConversationId() {
        return null;
    }

    public void registerDestructionCallback(String name, Runnable callback) {
        //Not supported
    }

    public Object resolveContextualObject(String key) {
        return null;
    }
}

Зарегистрировать новую область в файле конфигурации пружины

<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
    <property name="scopes">
        <map>
            <entry key="view">
                <bean class="com.yourdomain.scope.ViewScope"/>
            </entry>
        </map>
    </property>
</bean>

И чем использовать ее с вашим компонентом

@Component
@Scope("view")
public class MyBean {

    ...

}
...