我有一个模板页面,其中包含十页所需的所有代码,其中页面之间唯一的差异是一些值
其中大多数都运行良好,但是这部分代码存在问题:
<p>
<p:spinner id="ajaxspinner0-19" value="#{tooltipBean.sectionSave}"
stepFactor = "1" min="0" max="19"
disabled = "#{formBean.number != 1}" >
<p:ajax update="ajaxspinnervalue " process="@this" />
</p:spinner>
</p>
这个代码背后的想法是它去tooltipBean获取节保存值,将此值添加到此处然后为此从另一个bean获取值
tooltipBean中的值是
sectionSave = "#{markingBean.markToEdit.markSectionOne}";
我在视图页面中使用模板:
<f:event listener="#{tooltipBean.setupForPageA}" type="preRenderView" />
<ui:include src="/WEB-INF/templates/commonForm.xhtml"/>
我使用以下方式正常工作而不使用模板:
<p>
<p:spinner id="ajaxspinner0-19" value="#{markingBean.markToEdit.markSectionOne}"
stepFactor = "1" min="0" max="19"
disabled = "#{formBean.number != 1}" >
<p:ajax update="ajaxspinnervalue " process="@this" />
</p:spinner>
</p>
该代码将在旋转器中给出值71,但是模板中的代码显示在微调器#{markingBean.markToEdit.markSectionOne}这是正确的我只需要运行并返回71而不是向我显示代码值
这是否有意义,对不起,如果我把它写成令人困惑,我不确定如何描述问题
我认为它不会在正确的时间进行内部化,是否可以首先使用值对页面进行intatlise,然后在用户查看之前给它时间以获取该值的新值71
答案 0 :(得分:0)
您不能像这样从支持bean指定EL。微调器控件假定它将获取和设置对作为其value属性传入的任何内容的访问权限。它不会试图将指定的值解释为EL,这可能是一个非常危险的副作用。
以下是我接近它的方法。将值作为参数传递给模板:
<ui:include src="templates/commonForm.xhtml">
<ui:param name="spinnerValue" value="#{markingBean.markToEdit.markSectionOne}" />
</ui:include>
然后,在模板中引用该参数:
<p>
<p:spinner id="ajaxspinner0-19" value="#{spinnerValue}"
stepFactor = "1" min="0" max="19"
disabled = "#{formBean.number != 1}" >
<p:ajax update="ajaxspinnervalue " process="@this" />
</p:spinner>
</p>