gpt4 book ai didi

parameters - 如何将具有相同键的多个参数提取到 JSF 托管 bean 中

转载 作者:行者123 更新时间:2023-11-30 23:47:11 24 4
gpt4 key购买 nike

假设我有这个要求:

myview.xhtml?a=1&b=par1&b=par2

myview.xhtml
<f:metadata>
<f:viewParam name="a" value="#{myBean.a}"/>
<f:viewParam name="b" value="#{myBean.b}"/>
</f:metadata>

MyBean
@ManagedProperty("#{param.a}")
String a;

@ManagedProperty("#{param.b}")
String b;

我以为 setB(String b)将被调用两次,所以我可以将项目添加到 List ,但它只被调用一次,第一个值( par1 )。

我还尝试将 b 转换为 List<String>但是 JSF 没有评估为 List .

所以,我的问题是如何使用相同的键注入(inject)多个参数值, 使用 @ManagedProperty . (现在我正在手动获取 paramterValues)

最佳答案

你的问题有点令人困惑。您同时使用 <f:viewParam>@ManagedProperty . Usually you use the one or the other .

@ManagedProperty这很容易。您需要#{paramValues.b}而不是 #{param.b} .这在幕后与 HttpServletRequest#getParameterValues() 相同。返回 String[]具有给定名称的所有参数值。

@ManagedProperty("#{paramValues.b}")
private String[] b;

<f:viewParam>我没有看到任何方法。我的印象是这根本不被支持。但我也觉得你根本不需要它。

更新 : 巧合的是,我在 decode() 中遇到了以下评论在 UIViewParameter 的源中爬取时的方法(Mojarra 2.1.1,第 218 行及以上)我回想起这个问题:
// QUESTION can we move forward and support an array? no different than UISelectMany; perhaps need to know
// if the value expression is single or multi-valued
// ANSWER: I'd rather not right now.
String paramValue = context.getExternalContext().getRequestParameterMap().get(getName());

因此, <f:viewParam> 根本不支持它的“设计”。 .

关于parameters - 如何将具有相同键的多个参数提取到 JSF 托管 bean 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6585219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com