gpt4 book ai didi

java - JSF 我需要用 StringArray 填充 selectItems 但我需要先解析它

转载 作者:行者123 更新时间:2023-12-02 07:30:58 24 4
gpt4 key购买 nike

我创建了另一个问题,希望能找到答案,但我走错了方向。这是供引用的问题( How do I parse this into a MultiValued Map? )

我从属性文件中提取一个字符串数组(使用 Apache 配置),该数组进来后看起来像这样

name,5486984,189.658.235.215,3.158.68.15,name2,189189,189.658.218.268,3.158.68.13...

这是 JSF 的一部分

<f:selectItems itemValue="#{mainBean.information}" value="#mainBean.information}" />

这是 Java 的片段

Private String [] information;
information = config.getStringArray("information"); // This brings in this string from the property file

我一直在引用这个http://www.horstmann.com/corejsf/refcard.html

因此,我刚刚发布了这里的内容。它将填充该字符串数组的每个元素。我只希望显示“名称”,并将其他三个值作为实际“值”传递。

我尝试创建一个由字符串和字符串数组组成的 Map 对象,但 JSF 拒绝接受它。

最佳答案

I tried to make a Map object that is a string and a string array but JSF refuses to take it.

一个Map应该管用。具体的例子可以在our selectOneMenu tag wiki page中找到。 。映射键成为选项标签,映射值成为选项值。

您应该只意识到选项值最终出现在 HTML 响应中,位于 value 内。 HTML 的属性 <option>像这样的元素

<option value="someValue">

由于 HTML 实际上是纯文本,因此如果不先转换它们,就无法在 HTML 中表示非标准 Java 对象。一个String[]是非标准的,当您没有明确指定转换器时,默认情况下 Object#toString() 结果将内联在 HTML 中,并且在 String[] 的情况下会内联看起来像

<option value="[Ljava.lang.String;@1860045">

当选择该选项时,该值将依次提交到服务器端。但是,由于该值是难以理解的字符序列,因此无法将其转换回原始 String[]以任何方式使用 Java/JSF/EL 的值(value)。

您也可以只传递List<String>,而不是提供转换器。包含周围的名字。

<h:selectOneMenu value="#{bean.name}">
<f:selectItems value="#{bean.names}" />
</h:selectOneMenu>

处理表单提交时,您只需获取关联的 String[]根据直接从配置文件或某些提交的名称返回 Map它被记住为 bean 属性。

关于java - JSF 我需要用 StringArray 填充 selectItems 但我需要先解析它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12918956/

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