- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想分享我使用 primefaces、f:viewParam 和 p:commandButton 的经验,并提出几个问题。请看一下此页面:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<f:metadata>
<f:viewParam required="true" name="id_file" value="#{bean.idFile}" />
</f:metadata>
<h:form id="tableform" prependId="false">
<p:commandButton actionListener="#{bean.myMethod())}" icon="ui-icon-search" title="View" />
</h:form>
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
</h:body>
</html>
支持 bean 有一个不执行任何操作的“myMethod()”方法。当您进入页面时,它需要“id_file”参数并将其放入支持 bean 的 idFile 属性中。然后单击按钮并调用 myMethod。然后您再次单击,您会收到一个模糊的验证错误,并且 myMethod 永远不会被调用:
j_idt1: Validation Error: Value is required.j_idt1: Validation Error: Value is required.
首先,请记住,如果没有 p:messages,您将看不到此消息,您必须挖掘 primefaces 在 ajax 调用上发送的 XML。其次,经过 4 个小时的调试,我尝试像这样更改 f:viewParam:
<f:viewParam name="id_file" value="#{bean.idFile}" />
没有“必需”:神奇的是,一切都开始工作,我可以单击 1、2、3 等,每次都会调用 myMethod。所以,问题是 ajax 提交验证 f:viewParam 指定的参数,这对我来说听起来很愚蠢,但是好吧,我可以忍受它。
我的问题是:
为什么第一次单击按钮时不会出现此验证错误?如果您查看 ajax POST,它们是相同的
在部分ajax调用上验证 View 参数(在我看来,属于 View )应该可以吗?
有没有办法告诉 primefaces 不要验证特定的 ajax 请求(process="@this"无法解析)?
谢谢,我希望我的经验能让您避免花费大量时间进行调试!
最佳答案
viewParam
是 UIComponent
。这意味着它在语义上与 <h:commandButton/>
没有什么不同。或<h:inputText/>
它能够经历每个规定的 JSF 请求处理生命周期阶段,直到并包括验证和转换。事实上,标签本身会导致任何给定 View 进入任何给定页面的完整处理,只需在那里
<p:commandButton/>
将执行回发,这意味着它将使用 POST 重新请求相同的 View 。因此,要解决您当前的问题,您需要根据以下事实确定所需的条件:
<f:viewParam required="#{!facesContext.postback}" name="id_file" value="{bean.idFile}"/>
从新条件中得到的结果是,仅在第一次请求时才需要该参数。后续回发不会触发该条件。只要确保您没有任何逻辑(也许在围绕该期望构建的 @PostConstruct
中
关于ajax - 使用 f :viewParam with required attribute and commands,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21222348/
如果 f:viewParam,我执行重定向(或错误)是空的? 当我添加 required="true" , 没发生什么事。有什么选择? 最佳答案 When I add required=
我有一个驱动的搜索屏幕。我正在尝试将其实现为单个接受多个值。 我相信正确的网址看起来像 ?state=COMPLETE&state=PENDING XHTML部分如下: 我已经在backi
我正在使用 JSF 和 Primefaces,我的问题是: 我有一个页面(page1.jsf),它接收一个带有字符串列表(空格分隔)的 View 参数: listConverter 将字符串转
我有一个页面,我想根据 View 参数给出的值包含页面的一部分(在本例中为页脚)。 我的 ViewScoped 支持 bean 在 preRenderView 上初始化 这会
有什么区别和 在 JSF 2.1 中? 最佳答案 简单的说: 用于内部 附上 UIViewParameter作为当前 View 的元数据。例如,如果您访问页面 myapp/check.jsf?id=3
当我单击下面页面上的命令按钮时,导航失败。 (单击按钮刷新页面,删除 URL 参数并显示所需的错误消息,而不是导航到索引页面) 但是,如果我删除必需的属性或删除 f:ajax 标记,导航就可以正常工作
我目前正在尝试将记录的 id 从一个页面发送到另一个页面。 所以在第 1 页,我有这样的事情: 在目标页面(TInput.xhtml)中,我有这样的东西来捕获
我想创建一个表单来简单地修改一些项目实体的字段。 为此,我创建了一个请求范围的 bean 和一个 View ,该 View 与转换器一起使用以告知 bean 正在编辑哪个实体。 bean @Named
我想分享我使用 primefaces、f:viewParam 和 p:commandButton 的经验,并提出几个问题。请看一下此页面:
我有一个 xhtml 页面,其中有一个带有 f:param 的输出链接 Start 在目标页面中,我有 View 参数 f:metadata> 我的
像这样定义 View 参数有什么区别: 并在 ManagedBean 中定义属性,如下所示: @Inject @ManagedProperty(value = "#{param.id}")
假设我已经有一个自定义类之间的转换器 Car和 String . 有没有办法优雅地做到这一点 工作时mybean.cars是 Set或 List而不仅仅是一个 Car ,而不必在汽车列表和字符串列表
我正在尝试 MyFaces CODI 及其出色的功能。一个非常有用的东西是类型安全导航。我可以在 Controller bean 中指定操作方法的结果,如下所示: public Class goBac
抱歉,可能是另一个非常基本的问题。在我的 ViewScoped bean 中,“viewParam”看起来已经设置好了,但是当我开始使用它时,它的值为 null。我在 setter (setEvent
我们有一个设置,我们将不同的可选 View 参数传递给 JSF 页面,并在设置参数后处理后续 View 操作。一个非常简单的例子如下所示: page.xhtml:
我有一个 JSF 页面上的标记,用于在转换和验证后将 GET 参数设置为相应的托管 bean。 如果发生转换或验证错误,则会从资源包中获取适当的错误消息并显示在 上。 (也可以是 或 )。 该
也许有人可以启发我。 如果放置 在模板内,setter setValue is never called, i.e. the preRender method 'call()' is cal
我有以下页面:
我有一个 viewscoped bean,它通过 f:viewparam 接收参数并使用它们在模型中设置值。页面回发后,参数从 url 中消失,但初始参数设置的模型值以某种方式保留。 这是保存参数的安
我想为 View 参数使用标准的 JSF 转换器 (javax.faces.convert.DateTimeConverter) 来自文档: You can refer to the converte
我是一名优秀的程序员,十分优秀!