2015-03-03 114 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