【问题标题】:How to add attribute to html tag based on condition using loop如何使用循环根据条件向html标签添加属性
【发布时间】:2021-09-06 01:44:51
【问题描述】:

我的任务是根据我正在迭代的集合的当前元素,从 <select> 元素中预先选择一些条目。

我们使用 JSF 来渲染 html,并且有一个循环遍历某个集合。在迭代过程中基于当前项,我必须在<option>标签中添加或不添加selected属性。

问题是selected 不带任何值,它只需要出现在标签中,以便在<select> 标签中预先选择项目。我试过selected=true/false,但没有用。所以这就是我尝试过的,JSF 返回解析异常:

<select value="#{...}">
    <c:forEach items="#{registrationManagementBean.offersMap}" var="entry" rowIndexVar="rowIndex">
        <option #{registrationManagementBean.offerId == entry.key? 'selected' : ''} value="#{entry.key}">#{entry.value}</option>
    </c:forEach>
</select>

这会产生:

Error Traced[line: 213] 元素类型“option”必须后跟属性规范“>”或“/>”。

当我尝试selected = #{registrationManagementBean.offerId == entry.key? 'true' : 'false'} 时,它可以正确呈现,但它不起作用。

有没有办法实现这个需求?

【问题讨论】:

    标签: jsf xhtml


    【解决方案1】:

    以下内容在 XML 中无效,这导致了您看到的错误:

    <option selected>Value</option>
    

    应该是:

    <option selected="selected">Value</option>
    

    话虽如此,在使用 JSF 时渲染自己的 select 元素是很奇怪的。以应有的方式使用 JSF,并使用 h:selectOneMenu 呈现 select 元素。使用 JSF 组件,值绑定和验证等内容很容易配置。

    另见:

    【讨论】:

    • 感谢您的回答。那么如何使用h:selectOneMenu 预先选择一些&lt;option&gt; 条目?
    • 只需将其值设置为所需的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    相关资源
    最近更新 更多