将 f:viewParam 与必需的属性和命令一起使用

2023-11-22

我想分享我使用 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调用上验证视图参数(在我看来,属于视图)应该可以吗?

  • 有没有办法告诉 primefaces 不要验证特定的 ajax 请求(process="@this" 无法解析)?

谢谢,我希望我的经验能让您避免花几个小时进行调试!


  1. The viewParam is a UIComponent。这意味着它在语义上与<h:commandButton/> or a <h:inputText/>它能够经历每个规定的 JSF 请求处理生命周期阶段,直至并包括验证和转换。事实上,标签本身会导致任何给定视图进入任何给定页面的完整处理,只需在那里

  2. The <p:commandButton/>将会做一个postback,这意味着它将使用 POST 重新请求相同的视图。因此,要解决您当前的问题,您需要根据以下事实确定所需的条件:

    <f:viewParam  required="#{!facesContext.postback}" name="id_file" value="{bean.idFile}"/>
    

    从新条件中得到的是,仅在第一次请求时才需要该参数。后续回发不会触发该条件。只要确保你没有任何逻辑(也许在@PostConstruct围绕这个期望建立的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 f:viewParam 与必需的属性和命令一起使用 的相关文章

  • 在 JSF 自定义验证器中区分 ajax 请求和完整请求

    我的验证器需要知道它是完整请求还是 ajax 请求 在我当前的解决方案中 我检查 http 请求标头X Requested With元素 public void validate FacesContext context UICompone
  • 如何指定消息是否应显示在 p:growl 或 p:messages 中?

    在我的 Facelets 页面中 我有这个
  • JSF“总”变量类似于 JSTL 中的 c:set

    我不喜欢 JSF 但我需要用它来解决这个问题 我正在 纯 JSF 中工作 所以这就是我基本上需要的 但我不知道如何用 JSF 来实现它
  • 丰富:数据表行跨度问题

    我需要创建一个 rich dataTable 甚至扩展 具有以下功能 我有一个公司类 其中包含产品对象的集合 我想展示下表 我仍然没有弄清楚如何使用子表执行此操作 在所有示例中 我发现子表具有与主表完全相同的列 据推测 我需要在前两列中使用
  • 使用 Express 检测 NodeJS 上的 AJAX 请求

    我正在使用 NodeJS 和 Express 如何区分普通浏览器请求和 AJAX 请求 我知道我可以检查请求标头 但是 Node Exprsss 是否会公开此信息 大多数框架设置了X Requested With标头至XMLHttpRequ
  • AJAX VS PHP 动态网页?

    当您只能使用 php 来实现动态网页时 为什么要使用 AJAX 呢 使用 AJAX 的主要原因是用户体验 UX 现在 AJAX 不一定会改善每个实例的用户体验 所以在很多地方坚持使用纯 PHP 完全没问题 但想象一下这样的情况 网站上有一个
  • 嵌套 .ajax() 调用的 JavaScript/jQuery 变量作用域问题

    我很难传递变量postData这是一个嵌套子级的序列化 jQuery 数组对象 ajax call postData成功传递给第一个 ajax 打电话 但是当我尝试在第二次使用它时 ajax 调用时 它不会发布任何表单元素 因为变量在该级别
  • 使用 JSONP 时出现“无效标签”?

    我的 JSONP 请求有问题 数据不会显示 Firebug 显示 无效标签 错误 我的 JavaScript ajax url link dataType jsonp beforeSend function xhr var base64 b
  • Web API 2.0 使用 pascalcase 模型接收驼峰式命名的 JSON 数据

    我正在尝试对我的 Web API 进行 PUT 调用 我在 WebApiConfig cs 中设置了以下内容 以处理以驼峰形式将数据发送回我的 Web 项目 config Formatters JsonFormatter Serialize
  • jQuery mCustomScrollbar 不适用于 ajax 内容

    window load function content 1 mCustomScrollbar scrollButtons enable true ajax code function beauty of ceylon content te
  • 如何使用 .net 2.0 中的 WebBrowser 控件检查 ajax 更新?

    我有一个网页正在使用 WebBrowser 控件在 winform 应用程序中显示 我需要在网页中的 HTML 发生变化时执行一个事件 但是 我找不到通过 Ajax 更新页面时触发的事件 DocumentComplete FileDownl
  • Internet Explorer 中的 AJAX 问题

    这在 FF safari chrome 和 opera 中工作得很好 但在 IE 中却不行 错误代码是403 var datau trends php 3Frastgele 3D33 ajax type GET url loader php
  • 设置开始日期后设置 primefaces 日历结束日期

    我正在使用 primefaces 日历来创建事件 使用 mindate 参数 我禁用了当天之前的日子 即使有结束日期 我也想这样做 禁用开始日期之前的日子 我不知道如何处理这个问题 因为支持 bean 仅在验证整个表单后才获取开始日期 我需
  • 沉默 FullAjaxExceptionHandler

    所以在面对可怕的事情之后javax faces application ViewExpiredException 我不得不去互联网上寻找合适的解决方案 幸运的是 解决方案很容易获得 我继续采用了 OmniFacesFullAjaxExcep
  • 将 Json 数据返回给 Ajax 调用

    我在 MVC 中有一个方法 我将其发布到它 并且我需要返回一些数据以进行处理 这是我发布到的 MVC 方法 返回值是 json 数据 HttpPost public JsonResult GetCalculateAmortizationSc
  • Dojo“正在加载”消息

    我是 Dojo 新手 所以我需要一些帮助 我的一些链接需要一段时间 当用户单击时 页面开始加载需要几秒钟 我想添加一条 正在加载 消息 我可以用 旧时尚方式 来做 但我想学习新的 更简单 更智能的 Dojo 方式 具体如何工作现在并不重要
  • 如何将 Ajax 与 jQuery 结合使用

    function ajaxFunction var ajaxRequest The variable that makes Ajax possible try Opera 8 0 Firefox Safari ajaxRequest new
  • primefaces 元素无法加载我的 css 文件的 url

    当我将样式 css 放在同一个 xhtml 页面中时 它可以与我的页面一起使用 例如
  • #! (hashbang)和 Google SEO [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经阅读了有关抓取支持 AJAX 的页面的 Google 规范 由于 Google 的部分索引方法使用 URL 本身 因此将转换为 对S
  • 使用ajax轮询服务器

    我正在建立一个网站 该网站有一个用户可以互相发送消息的系统 我希望这样当登录用户收到消息时 他会在屏幕上看到一些更新告诉他这一点 这些消息不必是实时的 所以我认为我不想用彗星或主宰之类的东西来推动 相反 我很乐意每隔一分钟左右轮询一次服务器

随机推荐