来自bean的值无法正确显示的问题

时间:2014-04-09 11:41:47

标签: jsf jsf-2 primefaces spinner

我有一个模板页面,其中包含十页所需的所有代码,其中页面之间唯一的差异是一些值

其中大多数都运行良好,但是这部分代码存在问题:

            <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

1 个答案:

答案 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>