2014-07-16 91 views
-3

現在我們在數據錶行中放置一對primefaces對話框。這工作到目前爲止,但我想將它們移出數據表。從javascript更新primefaces對話框內容

因爲總是隻有一個實例顯示給特定對話框的用戶,所以我想通過Javascript更新它的值,然後將其彈出給用戶。對於僅包含幾個組件並且信息已經在客戶端上可用的簡單對話的情況就是這種情況。

它迄今爲止是什麼。 (它是HTML格式,不是JSF,因爲我現在沒有JSF代碼)

<table> 
    <tr> 
    <td> 
     <a onClick="show('dialog');" /> 
     <div id='dialog'> <!-- the dialog --> 
     <input type="text" name="field" value="value" /> 
     </div> 
    </td> 
    </tr> 
</table> 

例如,我想實現:

<table> 
    <tr> 
    <td> 
     <a onClick="updateDialog('dialog',{'field', 'value'}); show('dialog');" /> 
    </td> 
    </tr> 
</table> 

<div id='dialog'> <!-- the dialog --> 
    <input type="text" name="field" value="value" /> 
</div> 

你認爲這是可行的,或者你覺得已經有類似的解決方案在那裏在野外?謝謝。

+0

你爲什麼發佈生成的HTML而不是JSF XHTML頁面?我在這裏看不到任何可定義對話框的數據表。 –

+0

我還沒有在JSF中實現我的解決方案,但是從HTML中可以看到我想實現的目標。 – illEatYourPuppies

+1

你對JSF有什麼想法嗎? –

回答

0

聽起來像你想要這樣的東西...只要確保,你存儲實例編輯的bean存活請求。請務必閱讀有關PrimeFaces文檔中的局部處理和局部呈現,你可以免費下載:http://www.primefaces.org/documentation

<h:form id="tableForm"> 
    <p:datatable value="#{carBean.cars}" var="car" ...> 
    <p:column> 
     <p:commandButton value="edit" action="#{carBean.edit(car)}" process="@this" update=":editForm" oncomplete="PF('carDialog').show();"/> 
    </p:column> 
    ... 
    </p:datatable> 
</h:form> 

<h:form id="editForm"> 
    <p:dialog widgetVar="carDialog" rendered="#{carBean.carToEdit ne null}"> 
    <p:inputText value="#{carBean.carToEdit.brand" placeholder="brand" ... /> 

    ... 
    </p:dialog> 
</h:form> 
+0

是的,我認爲它可以做更復雜的對話。但我最初想到的是從簡單的情況下更新JavaScript對話框,例如用於確認,或簡單的輸入字段。所以不需要額外的ajax請求來加載對話框。 – illEatYourPuppies

+0

您可以通過在命令按鈕的更新參數中使用更具體的標識符來更新對話框的特定部分。像':editForm:brand'一樣在對話框中更新ID爲'brand'的輸入字段。 – truemmer