我用google搜索和堆栈溢出了很多,但我似乎无法找到答案。
需要做的是当选择更改时需要更新outputLabel的值,并且当您选择选项B时,inputText的禁用需要更改为启用。(此外,所选值显示在inputText)
我的xhtml剪辑:
<p:selectOneMenu id="findex" value="#{myController.selected.findex}" >
<p:ajax update="extra1 labelextra1" immediate="true"/>
<f:selectItem itemLabel="Value A" itemValue="A" />
<f:selectItem itemLabel="Value B" itemValue="B" />
</p:selectOneMenu>
<p:outputLabel id="labelextra1" value="#{myController.selected.findex == 'A' ? '' : 'X'}" for="extra1"/>
<p:inputText id="extra1" value="#{myController.selected.findex}" disabled="#{myController.selected.findex == 'A'}"/>
(如果我将它添加到ajax中,我的支持bean中的监听器会被调用,但我不确定我是否需要它,这是一个简单的改变事件,不是吗?)
答案 0 :(得分:2)
我举了一个例子。这很好用。我认为你没有<h:form>
对吗?你需要一个表格。
<强> .XHTML 强>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Jsf page.</title>
</h:head>
<h:body>
<h:form>
<p:selectOneMenu id="findex" value="#{myController.test}">
<f:selectItem itemLabel="Value A" itemValue="A" />
<f:selectItem itemLabel="Value B" itemValue="B" />
<p:ajax update="labelextra1 extra1" />
</p:selectOneMenu>
<p:outputLabel id="labelextra1" value="#{myController.test}" for="extra1" />
<p:inputText id="extra1" value="hello" disabled="#{myController.test == 'A'}"/>
</h:form>
</h:body>
</html>
<强> BEAN:强>
@ManagedBean
@ViewScoped
public class MyController implements Serializable{
private String test = "hallo";
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
}