h:未在bean中设置inputText值

时间:2011-03-07 15:54:51

标签: jsf

请求范围bean中未设置<h:inputText>值。如果从DB保留该值,则可以正常工作。

视图:

<h:inputText id="receipient" size="90" styleClass="text" readonly="#{!bean.enable}" value="#{bean.recipient}" />

豆:

public class Bean {
    private String recipient;
    Bean(){
        recipient = //load from db
    }
    //set 
    //get
}

问题是什么?我该如何解决?

1 个答案:

答案 0 :(得分:0)

确保readonly="#{!bean.enable}"的评估与初始视图中的评估相同。如果它在表单提交的应用请求值阶段评估true,则不会处理组件的值(因为它被标记为只读)。

一个简单的测试是将bean放在会话范围内。如果这样可以解决问题,那么你就知道了罪魁祸首。如果您使用的是JSF 2.0,只需使用@ViewScoped而不是@RequestScoped将bean放入视图范围。如果你仍然使用JSF 1.x,请使用Tomahawk's <t:saveState>组件让bean像JSF 2.0视图一样运行。

<t:saveState value="#{bean}" />