0

JSF 2 允许使用<f:viewParam>标签来初始化 URL 参数。

例如:

<f:viewParam id="name" name="name"
            value="#{applicationBean.name}" required="true" />

然后在 backing bean 中使用这个参数来加载一些使用<f:event>.

例如:

<f:event type="preRenderView"
            listener="#{applicationBean.preRenderView}" />

中的preRenderView()方法applicationBean将一些布尔变量buttonEnabled设置为 true\false

在主页中使用此变量来启用\禁用按钮时,它不起作用(例如,它总是评估为假):

<h:commandButton disabled="#{!applicationBean.buttonEnabled}">

有什么建议么?

4

1 回答 1

1

有时间问题。操作事件在应用请求值阶段排队。作为防止被篡改请求的一部分,它还将在该点评估disabled(and ) 属性。rendered然而,由于它实际上只是在渲染响应阶段之前设置,所以它确实总是会评估为其默认值,显然是false.

您需要改为执行基于请求参数的初始化作业@PostConstruct<f:viewParam>然后确实不合适),或者让disabled属性检查请求参数本身而不是 bean 属性(然后 bean 属性确实不合适)。

于 2015-02-10T14:55:52.640 回答