启用\禁用命令按钮取决于URL参数

时间:2015-02-10 12:29:18

标签: jsf disabled-control viewparams

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

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

有时间问题。在应用请求值阶段,操作事件排队。作为防范篡改请求的一部分,它还会评估此时的disabled(和rendered)属性。但是,因为它实际上只是在渲染响应阶段之前设置,所以它确实总是会计算到它的默认值,显然是false

您需要在@PostConstruct中执行基于请求参数的初始化作业(<f:viewParam>确实是不可行的),或者让disabled属性检查请求参数本身而不是bean属性(bean属性确实可以保险)。