JSF2.2,RequestScope和组件持久性

时间:2014-06-06 11:52:04

标签: viewstate jsf-2.2 myfaces mojarra


我的实际场景是一个使用 Mojarra 2.2.5 的简单JSF项目 我正在尝试以编程方式获取组件实例(通过“findComponent”方法或绑定...)并设置一些属性(单击“ ChangeColor ”按钮)。
之后,使用任何其他操作(例如单击“发送”按钮),先前的更改将被忽略!!
看来changeColor方法不会更新ViewState!
示例代码如下:

<h:form id="form">
    <h:panelGrid columns="1">
        <h:inputText id="input" binding="#{page9.input}"/>
        <h:commandButton value="Change BackColor" action="#{page9.changeColor}"/>           
        <h:commandButton value="Send" action="#{page9.dummy}" />
    </h:panelGrid>
</h:form>

相对的 RequestScope bean

@ManagedBean(name="page9")
@RequestScoped
public class Page9 implements Serializable {
private static final long serialVersionUID = 1L;
private HtmlInputText input;

public HtmlInputText getInput() {
    return input;
}
public void setInput(HtmlInputText input) {
    this.input = input;
}

public void changeColor(){      
    FacesContext fc = FacesContext.getCurrentInstance();
    HtmlInputText hit = (HtmlInputText) fc.getViewRoot().findComponent(":form:input");
    hit.setStyle("background-color:blue");
}


public void dummy(){

}

}

一些重要的考虑因素:
1)出于兼容性原因,我必须使用RequestScope 2)将javax.faces.PARTIAL_STATE_SAVING设置为“false”一切正常(!)。
3)尝试使用 MyFaces 2.2.3库一切正常(!)。

你怎么看? 感谢。

0 个答案:

没有答案