【问题标题】:JSF Passthrough element does not get it's value filed evaluatedJSF Passthrough 元素未评估其值字段
【发布时间】:2017-08-28 15:23:41
【问题描述】:

我在为 JSF 直通元素填充属性占位符时遇到问题:

JSF:

xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
<!-- ... -->
<h:selectOneMenu value="#{page.selectedCategoryDataKey}" id="mobileFilters" valueChangeListener="#{page.newCategorySelected}" layout="lineDirection" enhanced="true">
    <f:selectItem value="#{null}" itemLabel="#{messages.category_all}"/>
    <f:selectItems value="#{manager.dataEntryList}" var="categoryEntry" itemValue="#{categoryEntry.key}"
        itemLabel="#{categoryEntry.value.categoryName}"
        pt:data-track-name="See-#{categoryEntry.key}"/>
    <f:ajax execute="@this" render="@form -list"/>
</h:selectOneMenu>

我得到的 HTML

<select id="mobileFilterSelectForm-mobileFilters" name="mobileFilterSelectForm-mobileFilters" size="1" onchange="m.ab(this,event,'valueChange','@this','@form list')">	<option value="" selected="selected">All</option>
	<option value="Some" data-track-name="See-">Some</option>
	<option value="Most Popular" data-track-name="See-">Most Popular</option>
	<option value="New" data-track-name="See-">New</option>
	<option value="Instant" data-track-name="See-">Instant</option>
</select>
如您所见, data-track-name 不包含连接到 See- 字符串的值,因为它被评估为 itemValue项目标签

传递是否有可能不像常规 JSF 属性那样评估占位符?任何想法如何对其进行评估?

【问题讨论】:

  • 最终我最终使用了来自 xmlns:c="xmlns.jcp.org/jsp/jstl/core" 的 c:forEach 标签而不是 f:selectItems,它允许从占位符填充 data-track-name 属性值.

标签: jsf jsf-2


【解决方案1】:

JSF 将评估占位符属性中的值表达式。但是,当您在 selectItems 中使用迭代 var 时,您会发现它无法评估它们;我测试了这两种情况。它看起来像一个错误。

【讨论】:

    【解决方案2】:

    如果您设置execute="@this",那么JSF 框架将不会执行任何输入字段。将其值设置为 @parent@form 或列出必要的输入字段 ID。渲染只需指定要渲染的组件。 Execute 指定要转换、验证的回发参数、调用事件侦听器并复制到模型。

    它应该可以工作:

    <f:ajax execute="@parent".../>
    

    【讨论】:

    • 我不认为这是 ajax 部分的问题。我可以完全删除 ajax 标签,但初始 Select..Option 块仍然以错误的方式生成:属性值是正确的,例如value="Some",但我希望相同的选项标签具有 data-track-name="See-Some" 值。但是,它确实只有:data-track-name="See-" 值。
    猜你喜欢
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多