我正在使用JSF 1.1。我有一个JSF页面,其中包含一个请求范围的bean和一个只读输入字段。
<h:inputText id="dt" value="#{bean.sdate}" readonly="#{bean.disable}" />
<a onclick="cal('dt');"><img src="fr.gif" border="0"></a>
当我使用JavaScript设置输入值并单击命令按钮时,输入字段中的数据就会消失。
这是怎么引起的,我该如何解决。
最佳答案
这是因为该属性设置为readonly
。如果此方法评估true
,那么JSF将不会处理提交的值,因此不会更新模型。如果要在渲染 View 时将其设置为readonly
,则和具有JSF来处理提交的值,那么您需要使其仅在渲染响应阶段评估true
。您可以为此使用 FacesContext#getRenderResponse()
。您需要在isDisable()
方法中执行此操作。
public boolean isDisable() { // TODO: rename to isReadonly().
return FacesContext.getCurrentInstance().getRenderResponse();
}
注意:在JSF2中,您也可以在 View 中通过
FacesContext#getCurrentInstance()
访问#{facesContext}
,这在模型中节省了一些样板:<h:inputText ... readonly="#{facesContext.renderResponse}" />
还要注意,当您使用JSF2
<f:viewParam>
时,这种方法将不再适用于GET请求。另请参见Make a p:calendar readonly的说明和解决方法。
关于jsf - <h :inputText readonly =“true” > disappears when command button is clicked中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10384032/