簡體   English   中英

f:ajax無法在jsf應用程序中呈現目標組件

[英]f:ajax does not render target components in jsf app

我正在通過使用Eclipse和Apache Tomcat使用Java EE,JSF,Hibernate,MySQL編寫Web應用程序。 我不使用Spring,EJB等。

一開始,我看到組件的ID已用下面的代碼的“渲染”部分編寫。 但是,經過一些代碼開發,我意識到f:ajax不再更新這些組件。 另外,未觸發Bean中的函數(prepareTempUsrGrp和prepareTempUsr)-“ adminPanelFacade”。 我回到了正常運行的應用程序版本,但現在該版本也無法正常運行!

<input jsfc="h:commandButton" id="usrGrpHiddenBtn" class="hiddenBtn"  action="#{adminPanelFacade.prepareTempUsrGrp}">
    <f:ajax execute="adminPanelForm" render="grpDetNameInp managerPanel planMngmnt alarmMngmnt raporMngmnt devRegMngmnt energyCons mntnncLifeTime logMngmnt" />
</input>
<input jsfc="h:commandButton" id="usrHiddenBtn" class="hiddenBtn" action="#{adminPanelFacade.prepareTempUsr}">
    <f:ajax execute="adminPanelForm" render="usrDetUsrName usrDetUsrGrpName usrDetPass usrDetFName usrDetLName usrDetAddress usrDetTel usrDetMail" />
</input>

一些組件示例;

...
<tr class="grpDetTblRghtRow">
    <td>
        <input jsfc="h:selectBooleanCheckbox" id="managerPanel" title="Yönetici Paneli" value="#{adminPanelFacade.tempUsrGrp.ADMINISTRATOR_SCR}" />
    </td>
    <td>
        <span jsfc="h:outputText" value="Yönetici Paneli"/>
    </td>
</tr>
<tr class="grpDetTblRghtRow">
    <td>
        <input jsfc="h:selectBooleanCheckbox" id="planMngmnt" title="Planlama Yönetimi" value="#{adminPanelFacade.tempUsrGrp.PLANNING_SCR}" />
    </td>
    <td>
        <span jsfc="h:outputText" value="Planlama Yönetimi"/>
    </td>
</tr>
<tr class="grpDetTblRghtRow">
    <td>
        <input jsfc="h:selectBooleanCheckbox" id="alarmMngmnt" title="Alarm Yönetimi" value="#{adminPanelFacade.tempUsrGrp.ALARM_MNGMNT_SCR}" />
    </td>
    <td>
        <span jsfc="h:outputText" value="Alarm Yönetimi"/>
    </td>
</tr>
...

如果刪除f:ajax行,則該行有效,並且會觸發Bean的功能。 但是,我不想刷新所有頁面。 我只想更新特定的組件,所以我需要此解決方案。 我知道組件ID是正確的。 另外,我在控制台上看不到任何Java異常。

我從Eclipse中刪除了服務器配置。 我刪除了Tomcat 7.0並再次安裝。 我在Eclipse中創建了新服務器。 但是,什么也沒發生。 它仍然不起作用!

所有反饋非常感謝!

編輯:有新信息! 該應用程序可以在另一台計算機上正常工作,與我上次開發代碼之前在我的計算機上工作相同。 我的瀏覽器,Eclipse,Tomcat等中可能損壞了嗎? 盡管我已解決問題,但是當我繼續在代碼中使用f:ajax時,瀏覽器,Eclipse等中是否又有損壞的風險?

解決方案:太奇怪了,但是在對應用程序的基礎結構進行了一些不同的更改之后,問題得以解決。 1)我將Tomcat 7.0從32位版本升級到了64位版本。 2)我將在服務器端(localhost)工作的JSF庫從(jsf-api-2.2.0-m03.jar和jsf-impl-2.2.0-m03.jar)升級到(jsf-api- 2.2.6.jar和jsf-impl-2.2.6.jar)3)升級后,它不起作用。 然后,我更改了.xhtml頁面的form-id。 我運行了該應用程序,發現它正常工作! 然后,我改回了表單ID。 它仍然有效!

我認為我正在研究的系統(Eclipse,JSF庫或Tomcat)的基礎結構中存在錯誤。 我希望我不會再遇到這樣的錯誤。

我的建議是改變“執行”

<f:ajax execute="adminPanelForm" render="grpDetNameInp managerPanel planMngmnt alarmMngmnt raporMngmnt devRegMngmnt energyCons mntnncLifeTime logMngmnt" />

<f:ajax execute="@this" render="grpDetNameInp managerPanel planMngmnt alarmMngmnt raporMngmnt devRegMngmnt energyCons mntnncLifeTime logMngmnt" />

甚至可以添加event參數。

我懷疑您想在輸入發生問題時重新提交ID,而不是在表單提交時。

我不確定100%是否適合您。 它對我有用,但是我不知道<a4j:ajax>組件的原因/原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM