【问题标题】:Using GET parameters in JSF2在 JSF2 中使用 GET 参数
【发布时间】:2012-07-28 10:59:59
【问题描述】:

我正在尝试在 2 个视图(称为“A”和“B”)之间将表单字段值作为 GET 参数传递。 在“B”中,我使用 f:metadata 和 f:viewParam 处理参数。如果我直接使用 URL,这部分效果很好。

但是,现在我想从另一个视图“A”传递字段,但目前没有成功。字段定义如下:

<h:form>
<p:inputText id="field1" value="#{A.field1}"/>
<p:inputText id="field2" value="#{A.field2}"/>
[...]
</h:form>

如果我在 Primefaces p:button 中使用 f:param,参数会被传输但不会动态检索(事实上,如果我检查网页 html 代码,表单的初始值是“静态”写入的)。

处理这个问题的最佳方法是什么?

提前致谢

【问题讨论】:

    标签: java forms jsf-2 get


    【解决方案1】:

    h:buttonf:param 一起使用:

    <h:button outcome="B.xhtml" value="Click me!">
        <f:param name="maybe_an_id" value="3" />
    </h:button>
    

    这将生成一个普通的 HTML 按钮,点击时带有 Javascript,如下所示:

    <input type="button" value="Click me!"
      onclick="window.location.href='/path/to/B.xhtml?maybe_an_id=3'; return false;">
    

    另请参阅: When should I use h:outputLink instead of h:commandLink?

    【讨论】:

    • 感谢您的回复。使用“静态”参数一切正常,但我想要类似于 `
    • EL 在那里也有效,所以你可以使用#{param.field1} 之类的东西。查看EL implicit objects
    • 问题是只发送表单的“初始”值。如果我修改字段,则不会发送更改。我想有一些技巧可以做,因为表单使用 POST 方法(可能是 POST/Redirect/GET),但我不知道该怎么做。
    • 啊,我想我明白了,你想要的是一个带有 method="get" 的纯 HTML 表单,请参阅 the second part of this answer。如果您只想提交相同的值,为什么不直接使用带有h:commandButton 的 POST 呢?
    • 我终于明白我的问题是什么了。我尝试了一个带有“faces-redirect=true&includeViewParams=true”(在 A.xhtml 中)的命令按钮,它没有添加任何 GET 参数。很简单,在 B.xhtml 中,我必须(使用 viewParam)引用“A”bean 字段(我使用 f:viewParam value="#{B.field1}" 而不是 f:viewParam value="#{A .field1}"
    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 2011-03-22
    • 2011-04-05
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多