Primefaces selectOneMenu更新outputLabel和inputText

时间:2015-03-03 14:09:50

标签: jsf-2 primefaces selectonemenu

我用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中的监听器会被调用,但我不确定我是否需要它,这是一个简单的改变事件,不是吗?)

1 个答案:

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


}