【问题标题】:Skip validation for multilple Select one in jsf在jsf中跳过多个Select one的验证
【发布时间】:2012-04-23 12:34:51
【问题描述】:

我想在多个组件上使用验证。表单中有三个 h:selectOneMenu 组件和一些 h:inputText 组件。在更改第一个 h:selectOneMenu 时,我需要更改第二个的内容而不验证其他字段。这里我使用了 immediate="true"。 同样,对于第二个 h:selectOneMenu 组件,onchange 需要在这里更改第三个 SelectList 的内容,以便我想跳过对其他人的验证,并且我也为此组件使用了 immediate=true。问题是“immediate=true 和 FacesContext.getCurrentInstance().renderResponse()”仅适用于 nonImediate 组件。但是由于有两个组件具有 immediate=true ,因此在更改第一个 Select 时会在第二个 SelectOne 列表中显示错误。有人有吗有什么想法吗? 提前致谢。 我正在使用 JSF 1.2

【问题讨论】:

    标签: jsf-1.2


    【解决方案1】:

    在选择第一个 h:selectOneMenu 时,您可以使用值更改侦听器,在该侦听器中您可以在 bean 中执行您的操作,并且可以更改第二个 h:selectOneMenu 的内容。您需要重新渲染此组件。这样,您的 immediate="true" 部分将从

    中删除

    所以现在您可以在页面中只输入一个 immediate="true" 并且您只能在一个字段上进行验证。

    如果重新渲染和值更改侦听器不是您想要使用的,那么您可以将第一个 immediate="true" 组件放在第一个表单中,将第二个 immediate="true" 放在另一个表单中。

    这样,由于两种表单不同,您在这两种情况下的验证将仅在提交或处理该特定表单时运行。

    【讨论】:

    • 感谢您的回复。但问题是由于某种原因 ajax 在我的应用程序中不起作用,所以我不能使用 reRender 。对于第二种解决方案,您能否提供示例示例,说明如何在 jsf 1.2 中使用 xhtml 中的多个表单。
    • 我想使用 rerender 属性会让你的生活更轻松。你可以调试为什么 ajax 不能在你的应用程序中工作,因为所有这些功能最好让 ajax 属性在页面上完美工作。对于多个表单,您可以只在 xhtml 页面中包含两个表单。我没有将 JSF 与 facelets 一起使用,所以我不确定包含两个表单的方法是否与将 JSF(2.0)与 JSP 一起使用不同。使用 jsps 我只使用 2 个表单
      两个表单都有不同的表单 ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2011-04-28
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2012-10-13
    相关资源
    最近更新 更多