2013-08-24 135 views
0

我想問爲什麼爲primefaces部分呈現不起作用。 POST請求正在發送,但不會退出。jsf ajax呈現不起作用

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:p="http://primefaces.org/ui"> 
    <h:head> 
     <title>Facelet Title</title> 
    </h:head> 
    <h:body> 
     <p:messages /> 
     <h:form> 
      <table style="width: 100%"> 
       <tr> 
        <td><p:outputLabel for="inp1" value="S1" /></td> 
        <td> 
         <p:inputText id="inp1" value="#{form.e.s1}"> 
          <p:ajax process="inp1" update="msg1" 
            event="keyup" /> 
         </p:inputText> 
         <p:watermark for="inp1" value="Wpisz S1" /> 
         <p:message for="inp1" id="msg1" /> 
        </td> 
       </tr> 
       <tr> 

        <td>Toolbox</td> 
        <td> 
         <p:selectBooleanCheckbox id="inpToolbox" value="#{form.toolbox}"> 
          <p:ajax process="inpToolbox" update="toolboxOptions" /> 
         </p:selectBooleanCheckbox><br /> 
         <p:panel id="toolboxOptions" rendered="#{form.toolbox}"> 
          Name: <p:inputText value="#{form.toolboxDescription}" /><br /> 
          Number: <p:inputText value="#{form.toolboxNr}" /><br /> 
         </p:panel> 
        </td> 

       </tr> 
      </table> 

      <p:commandButton action="#{form.save}" ajax="false" 
          value="Save" /> 

     </h:form> 
    </h:body> 
</html> 

我不知道爲什麼它不應該工作。我希望每次更改工具箱值以顯示有關工具箱的附加信息表格

回答

2

當您想要更新視圖的某個部分時,您必須指定DOM中實際存在的元素的ID。但是您嘗試更新的面板並不總是出現在DOM中,只有在form.toolbox評估爲true的情況下。所以當它是假的它不能被更新,所以它不會被添加到視圖。 你可以做什麼來解決這個問題,將面板包裹在另一個元素內並更新該元素。這將工作,因爲包裝元素始終存在。

所以儘量在面板的部分如下: JSF + PrimeFaces: `update` attribute does not update component

<h:panelGroup id="toolboxOptions"> 
    <p:panel id="toolboxOptionsPanel" rendered="#{form.toolbox}"> 
    .... 
    </p:panel> 
</h:panelGroup> 

在爲進一步的解釋以下問題的答案看一看