java - f :ajax does not render target components in jsf app

标签 java ajax eclipse jsf tomcat

我正在使用 Eclipse 和 Apache Tomcat 使用 Java EE、JSF、Hibernate、MySQL 编写 Web 应用程序。我不使用 Spring、EJB 等。

一开始,我看到更新了组件,其 id 写在下面代码的“渲染”部分。然而,经过一些代码开发,我意识到 f:ajax 不再更新这些组件。此外,bean - “adminPanelFacade”中的函数(prepareTempUsrGrp 和 prepareTempUsr)未被触发。我回到了可以正常工作的应用程序版本,但现在那个版本也不起作用了!

<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 页面的表单 ID。我运行了该应用程序,我看到它有效!然后,我改回了 form-id。它仍然有效!

我认为我工作的系统基础架构(Eclipse、JSF 库或 Tomcat)中存在错误。我希望我不会再遇到这样的错误。

最佳答案

我的建议是改“execute”

<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> 的内容/原因组件

关于java - f :ajax does not render target components in jsf app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23496479/

相关文章:

编译时的 C++ 语义错误

java - 使用 Apache POI 和 XWPF 在 java 中获取单词的缩略图

Java 1.7.0u71 无法加载 1.7.0u67 可以加载的小程序

php - MySQL 多重搜索与 jQuery/AJAX

java - 根据另一个 selectOneMenu 的选择更改 selectOneMenu 的值

eclipse - 有没有办法使用 Eclipse 从 JPA POJO 生成 JSF 表单?

测试套件中的java空指针异常

java - maven-surefire-plugin 包含/排除优先级

java - 在测试中的 Spring 环境中使用 @EnabledIf 和 spring.profiles.active 属性

javascript - Ajax返回页面Html代码返回(相同代码)