【问题标题】:JSF don't find component in view root with the form idJSF 在视图根目录中找不到表单 id 的组件
【发布时间】:2011-02-04 13:37:57
【问题描述】:

我在表单内有 at:inputFileUpload,在显示页面的 html 中,此组件的 id 是 form:inputFile 但是当我尝试使用“form:inputFile”从视图根目录获取组件时,返回为 null ,但是当“form:”被删除时,返回的是组件。组件没有在我的托管 bean 中设置值,有人有这个问题吗?

编辑:

<h:form id="form" enctype="multipart/form-data">
<t:inputFileUpload id="inputFile" size="40" value="#{managedBean.inputFile}"/>
</h:form>

在托管 bean 中:

    private UploadedFile inputFile;

使用 Eclipse 提供的获取和设置。

//This method scans the view root and returns the component with the id passed as parameter
findComponentInRoot("form:inputFile");

这返回null,但是当我使用时:

   //This method scans the view root and returns the component with the id passed as parameter
    findComponentInRoot("inputFile");

返回的是我正在寻找的组件,但是当我在 Internet Explorer 中使用 View Source 时,该组件的 id 是“form:inputFile”。

我不知道这是否相关,但是组件没有在我的托管 bean 中设置值,而且组件的 id 与 HTML 源代码不同的事实很奇怪。 我正在使用 JSF 1.2 Mojarra。其他人有这个问题吗?或者知道为什么会这样吗?

编辑2: 好的,我很愚蠢,显然构建工作不正常,当构建从 Ant 更改为其他任务时它工作(仍然不知道为什么,但只是工作)。给您添麻烦了。

【问题讨论】:

  • 我无法理解你的问题。提供更多细节,最好是代码并改写它。
  • 我在表单中有 at:inputFileUpload,组件的值不会进入我的托管 bean,当我尝试从视图根目录获取组件时,组件的 id 不同于页面的 HTML 源代码中显示的内容。
  • 你是如何尝试得到它的。正如我所说 - 提供代码!
  • 剩下的就是告诉 use findComponentInRoot 是什么。

标签: java jsf components


【解决方案1】:

我猜findComponentInRootthis(你应该分享的一个小细节)。

无论如何,使用findComponent(..)getChildren(..) 总是返回页面中定义的组件的id。 html id 是由naming container:id 组成的不同的东西。

【讨论】:

  • 我认为他真正想知道的是:为什么jsf没有正确设置backing bean中的uploadFile属性?
  • findComponentInRoot 正是链接中的代码。在这种情况下,我的问题是,在某些页面中它返回“formId:idComponent”,而在其他页面中返回“idComponent”,我不确定id中缺少“form”是否相关,但这组件未在托管 bean 中设置值。
【解决方案2】:

您应该使用组件bindingUIViewRoot#findComponent()。但这并不能解决上传文件未设置的问题。要修复它,第一步是确保您按照Tomahawk documentation 正确定义和配置ExtensionsFilter,因为它负责解析multipart/form-data 请求并将所有参数与上传的文件一起放回在请求参数映射中,以便FacesServlet 可以应用它们并更新模型值。

【讨论】:

  • 我的同事已经这样做了,并且在他工作的页面中运行良好,我已经获得了配置但在我的页面中无法正常工作。
  • 调试执行了哪些阶段以及是否抛出验证或转换错误(将&lt;h:messages/&gt;添加到页面以通知所有阶段)。
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 2021-03-24
  • 2011-12-28
  • 2017-10-23
  • 2013-01-04
  • 2012-12-31
  • 2012-07-28
相关资源
最近更新 更多