gpt4 book ai didi

jsf-2 - 单 f :viewParam fails validation on postback (ajax) requests on a ViewScoped bean

转载 作者:行者123 更新时间:2023-12-01 05:27:04 26 4
gpt4 key购买 nike

我将一个请求参数传递给在相应的 preRenderView 中处理的 facelet 页面。事件/监听器:

<ui:define name="metadata">
<f:metadata>
<f:viewParam name="id" value="#{essayDetails.id}" />
<f:event type="preRenderView" listener="#{essayDetails.init}"/>
</f:metadata>
</ui:define>

Init 方法被正确访问,页面呈现正常。我有一个 commandLink(RichFaces 组件),它通过 ajax 请求显示一个模式面板:
<a4j:commandLink rendered="#{essayDetails.comment}" render="create_comment_group" oncomplete="#{rich:component('create_comment_panel')}.show()">
<h:graphicImage library="images/icons" name="comment.png" />
</a4j:commandLink>

模态面板片段:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:utils="http://java.sun.com/jsf/composite/components/utils">

<rich:popupPanel id="create_comment_panel" autosized="true">

<f:facet name="header">
<utils:labeledIcon label="#{msg.action_comment}" image="icons/comment.png" />
</f:facet>

<h:form>

<h:panelGroup id="create_comment_group">

<h:inputTextarea cols="80" rows="8" value="#{essayDetails.userComment}" style="resize: none;" />

<table style="width: 100%">
<tr>
<td style="width: 50%;text-align: right;">
<a4j:commandButton value="#{msg.button_create}" action="#{essayDetails.saveComment}" execute="create_comment_panel_essay" render="essay_comments" oncomplete="#{rich:component('create_comment_panel')}.hide()" />
</td>
<td style="width: 50%;text-align: left;">
<a4j:commandButton value="#{msg.button_cancel}" execute="@none" oncomplete="#{rich:component('create_comment_panel')}.hide()" />
</td>
</tr>
</table>

</h:panelGroup>

</h:form>

</rich:popupPanel>

在此面板中,评论插入 h:inputTextArea字段,但是当按下相应的接受按钮而不是调用 #{essayDetails.saveComment} 时回发请求验证失败的方法 f:viewParam id 参数说这个字段需要一个值。

如果我们不对原始代码做任何更改,而是添加了一个额外的 f:viewParam :
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="id" value="#{essayDetails.id}" required="true" />
<f:viewParam name="v" value="#{essayDetails.v}" required="true" />
<f:event type="preRenderView" listener="#{essayDetails.init}"/>
</f:metadata>
</ui:define>

没有验证错误,行为符合预期。我在使用 f:viewParam 和/或 preRenderView 事件时做错了什么?

提前致谢!

最佳答案

尝试这个:

<f:viewParam name="id" value="#{essayDetails.id}" required="#{not facesContext.postback}" />

关于jsf-2 - 单 f :viewParam fails validation on postback (ajax) requests on a ViewScoped bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com