2017-10-19 165 views
0

任何人都可以解釋爲什麼h:inputText必須有required="true"當在控制器中設置屬性並使用ajax更新時(請參閱下面的示例)?JSF inputText只讀取required =「true」

不起作用:

<h:inputText id="textFieldId" value="#{model.itemValue}"> 

作品:

<h:inputText id="textFieldId" value="#{model.itemValue}" required="true"> 

操作:

<p:commandLink value="edit"> 
    <p:ajax event="click" listener="#{controller.edit(item)}" process="@this" update="@form"/> 
</p:commandLink> 

背後的思想是,我要爲項目按下按鈕能夠編輯等等我需要將這個項目傳播給inputText。

我看不到有任何理由要求設置爲true。

感謝

+1

'p:commandLink'已經啓用了ajax ...不需要'p:ajax'標籤!並且使用'process =「這個」''可以防止輸入被忽略',所以請創建一個[mcve]來表示真實的意圖 – Kukeltje

+0

其實你的建議解決了這個問題。刪除ajax並添加到命令鏈接作爲操作。謝謝 – Smolda

回答

1

的PrimeFaces p:commandLink默認情況下已經啓用了AJAX的,所以沒有必要窩裏面一個p:ajax標籤。

<p:commandLink value="edit" actionListener="#{controller.edit(item)}" 
    process="@this" update="@form"/> 

但是請記住,如果你添加一個process="@this",輸入不在服務器,只是commandLink上處理。如果'item'字段在這種情況下正確傳遞,我不清楚。