JSF Passthrough元素没有得到它的评估值

时间:2017-04-03 16:47:40

标签: jsf jsf-2

我有一个问题要填充JSF passthrough元素的属性占位符:

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 itemLabel

passthrough是否可能不像常规JSF属性那样评估占位符?有任何想法如何评估?

2 个答案:

答案 0 :(得分:0)

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

应该有效:

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

答案 1 :(得分:0)

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