Primefaces selectOneMenu 更新 outputLabel 和 inputText
Primefaces selectOneMenu update outputLabel and inputText
我在 google 和 Whosebug 上搜索了很多,但似乎找不到答案。
需要做的是当 selection 改变时需要更新 outputLabel 的值,当你 select 选项 B 时 inputText 的禁用需要更改为启用。(此外; selected 值显示在 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 中的侦听器确实会被调用,但我不确定我是否需要它,这是一个简单的更改事件,不是吗?)
我举个小例子。这很好用。我想你没有 <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;
}
}
我在 google 和 Whosebug 上搜索了很多,但似乎找不到答案。
需要做的是当 selection 改变时需要更新 outputLabel 的值,当你 select 选项 B 时 inputText 的禁用需要更改为启用。(此外; selected 值显示在 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 中的侦听器确实会被调用,但我不确定我是否需要它,这是一个简单的更改事件,不是吗?)
我举个小例子。这很好用。我想你没有 <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;
}
}