2016-11-24 49 views
0

我有輸入的形式與名稱姓氏和id以填充客戶數據的單個AJAX調用族元素爲在事件=「改變」

name  surname  lastName 
[  ] [   ] [   ] 

id  other fields 
[  ] [   ] 

輸入被定義爲通常以:

<p:inputText id="name" required="true" value="#{contactForm.name}" label="Name" styleClass="form-control"> 
    <p:clientValidator/> 
</p:inputText> 
<p:message for="name" /> 

當ID字段填I make an ajax call,看看數據以這種方式與客戶對應:

<p:outputLabel for="ID" value="ID" /> 
<p:inputText id="ID" required="true" value="ID" label="ID" styleClass="form-control"> 
    <p:ajax 
     event="change" 
     listener="#contactController.identifyCustomer(contactForm)}" 
     process="@this name,surname1,surname2" 
     update="newCustomerPanel" 
    /> 
    <p:clientValidator/> 
</p:inputText> 
<p:message for="dni" /> 

快樂案例用戶以正確的方式引入所有數據,這很好。

我的問題是,當沒有檢索到數據並且用戶需要更改某些輸入時執行ajax調用,如果事件需要啓動,用戶必須通過id輸入字段更改數據並返回哪些不是辦法。

現在正在處理變通方法:向涉及的所有字段插入ajax調用。當任何輸入啓動事件,在服務器端我檢查所有資料齊全改變調用檢索客戶數據服務...

但說實話,這是一個醜陋的解決方案,浪費大量的通話並沒有給出好的用戶體驗。

所以我想知道,有沒有辦法組所有字段並分配ajax調用和event="change"到這個組?

+1

添加不需要通用的Java代碼,甚至是錯誤的。它表明這個問題可以在普通的java類中用main方法重現,除了普通的jdk之外沒有外部庫。你不能這裏 – Kukeltje

+0

@Kukeltje不同意,primefaces字段需要一個java bean,我的解決方法工作在一個java控制器和ajax調用**是一個java方法**所以...恕我直言,你錯了... – joc

+1

你代碼也需要一個servlet引擎,所以你應該爲它標記tomcat或其他東西。它還需要一個瀏覽器,操作系統,電力等......你需要用這種語言編寫的東西,這並不意味着問題在於這一部分,這就是標記的意義​​所在。從標記描述中可以看出:** _「使用這個標記來提及Java編程語言或Java平臺工具的問題。」_ **。你的問題與核心編程語言有關嗎?或者到javac.exe或...?不,所以標籤不相關。如果您認爲它與託管bean相關,則使用該標籤(或cdi) – Kukeltje

回答

1

阿賈克斯標籤可以用作多個組件的wapper:

<f:ajax event="change"> 
    <h:input value... /> 
    <h:input value... /> 
    <h:input value... /> 
</f:ajax> 
+0

似乎不起作用我收到錯誤「事件:更改不受支持。」 – joc

+0

joc,「」和「」不是互換。 – BalusC

+0

@BalusC謝謝,現在對所有領域的數據都非常滿意......但在空白表單開始時,當每個字段填充時啓動ajax調用......有一些方法可以禁止所有必填字段裏面有''有一些數據嗎? – joc