2015-03-03 81 views
0

我google和stackoverflowed了很多,但我似乎无法找到答案。
需要做的事情是,当选择更改时,需要更新outputLabel的值,并且当您选择选项B时,inputText的禁用状态需要更改为启用状态。(此外;所选值将显示在inputText中)Primefaces selectOneMenu更新outputLabel和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'}"/> 

(我支持bean中收听者得到,如果我把它添加到AJAX调用,但我不知道,我需要,它是变化的情况下,ISN简单是吗?)

+0

是否没有'立即= “真”'工作? – 2015-03-03 14:15:24

+0

没有,没有或没有立即改变=“true” – TungstenX 2015-03-03 14:24:21

回答

1

我举个小例子。这工作正常。我想你没有<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; 
} 


} 
+0

这是在这个例子确实有效,我已经将它合并到实际的xhtml中。它的工作,直到我开始使用我的数据库实体的形式是基于。解决方案更复杂,但我必须让它工作。禁用的逻辑位于控制器中(不在xhtml中) – TungstenX 2015-03-04 08:19:36