【问题标题】:Can I "pass" an object with a JSF param tag?我可以“传递”带有 JSF 参数标记的对象吗?
【发布时间】:2011-01-06 04:18:14
【问题描述】:

我正在寻找的是在 value 属性中拥有一个带有我自己选择的 Object 的 f:param 标记。然后,在动作的支持 bean 方法中,我希望能够从请求中拉出这个对象。 (对不起,如果我的术语不太好,我是 JSF 的新手)。

现在,我可以很好地在请求参数中传递字符串。我也意识到一个参数在 http get 或 post 中总是会是一个字符串,所以我不是 真的 传递一个 java 对象。我也意识到这样做的一种方法是传递某种“id”,然后支持 bean 可以使用它来识别有问题的对象。

然而,我想知道的是,JSF 是否允许我透明地执行此操作。我可以指定任何对象作为参数的值,然后在操作方法中从 RequestMap 中获取它吗?

【问题讨论】:

    标签: java jsf httpwebrequest


    【解决方案1】:

    <f:param> 无法做到这一点。它需要附加到请求的 URL 中,所以它确实需要是 String。只需改用<f:setPropertyActionListener>

    例如

    <h:commandLink value="Submit" action="#{bean.submit}">
        <f:setPropertyActionListener target="#{bean.otherBean}" value="#{otherBean}" />
    </h:commandLink>
    

    这样#{otherBean} 就可以在submit() 方法中作为this.otherBean 使用。这样,您也不需要弄乱请求参数映射(在&lt;f:param&gt; 的情况下,我宁愿将托管属性注入#{param.name} 一起使用)。

    替代方案是使用 &lt;h:inputHidden&gt;Converter 或使用 Tomahawk 的 &lt;t:saveState&gt;。另请参阅this blog article 了解更多背景信息和示例。

    【讨论】:

    • 我会被诅咒的,这正是我想要的。谢谢!
    猜你喜欢
    • 2015-09-23
    • 2012-01-01
    • 2012-03-13
    • 1970-01-01
    • 2018-11-03
    • 2012-01-26
    • 1970-01-01
    • 2017-10-09
    • 2014-05-05
    相关资源
    最近更新 更多