jsf - <h :inputText readonly =“true” > disappears when command button is clicked中的数据

标签 jsf

我正在使用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/

相关文章:

jsf - 了解CDI中类型安全的必要性

java - Setter 方法在 JSF 中不起作用

jsf - 如何在我的托管 bean 中识别单击的 commandButton

jsf - 如何刷新不同文件中的元素

jsf - h :link and parameters JSF

jsf - 日历隐藏在 Accordion 组件内

jsf - @ViewScoped bean 在 JSF 中如何以及何时被销毁?

javascript - Pragma 无缓存和 javascript

jsf - 使用 p :dataExporter 将大型数据集导出为 XLSX 时超时

sorting - 如何基于map值对JSF dataTable实现多重排序