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;
}


}