我在面板网格内有一个输入文本区域。仅在勾选复选框时才会呈现此面板网格。我正在使用值更改侦听器来侦听复选框以呈现文本区域。这种渲染机制有效,但问题是我无法检索用户在文本区域中输入的值。它总是返回null。任何帮助表示赞赏。
// if box is checked, input text area is rendered
public void showURL(ValueChangeEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
boolean value = (Boolean) event.getNewValue();
setRenderURL(value);
context.renderResponse();
}
<h:panelGrid columns="2" >
<h:outputLabel value="Is position vacant?" />
<h:selectBooleanCheckbox valueChangeListener="#{formBean.showURL}"
onclick="submit()"
immediate="true" />
</h:panelGrid>
<h:panelGrid columns="2" rendered="#{formBean.renderURL}" >
<h:panelGroup>
<h:outputLabel value="Link: "/>
// trouble here: getURL always returns null
<h:inputText size="60" value="#{formBean.URL}" />
</h:panelGroup>
</h:panelGrid>
答案 0 :(得分:0)
添加
<h:inputHidden value="#{formBean.renderURL}" />
到相同的形式,以便在处理输入组件的请求期间保留所呈现的属性的条件。只要输入组件的rendered
属性或其中一个父组件评估false
,JSF就不会验证/转换/更新输入组件。