我正在尝试使用JSF,情况如下:

我有一个会话范围的托管bean

@ManagedBean(name = "rand")
@SessionScoped


我在其中声明了以下内容(包括其他内容):

private UIOutput uiOutput;(plus getter and setter)


在我的方面页面中,我有

<h:outputLabel for="userGuess"  binding="#{rand.uiOutput}"
value="#{rand.listSize}" rendered="false"/>


页面上有一个按钮,以及按钮的操作方法以及其他方面的内容

this.uiOutput.setRendered(true);


但是它似乎不起作用,该元素将不会呈现。

如果以渲染形式启动它并更改属性(将其设置为true或false),则它将起作用。
我怀疑这与以下事实有关:未渲染的元素未绑定到我在托管bean中拥有的uiOutput对象。在这种情况下,如何使它工作?

最佳答案

我更改了一件事情,现在它可以工作了,我更改了按下按钮时运行的方法的返回类型,它返回了一个字符串值,导航到同一页面,现在返回null,并且JSF不会生成新的view,相反,它呈现相同的视图,并且一切正常。

我猜因为每次我将渲染值设置为true或false时都会渲染一个新视图,因为每次在新视图上将该组件设置为rendered =“ false”都无关紧要。

08-18 14:41