我有这个JSF代码
<f:view>
<h:form>
<h:commandButton value="Generate License File" type="button" action="#{agreement.generateLicenseFile}"/>
</h:form>
</f:view>
这就是豆子
@ManagedBean(name="agreement")
@RequestScoped
public class AgreementBean {
private boolean generate=false;
public void generateLicenseFile(){
generate=true;
}
}
当我执行应用程序并单击按钮时,绝对没有任何反应。执行中没有错误。它根本不做任何事情。
有什么想法吗?
- 编辑 -
我的意思是不修改布尔值。
答案 0 :(得分:1)
当我执行应用程序并单击按钮时,绝对没有任何反应
很多事情都发生在幕后!
POST
请求,该请求将由Faces Servlet处理。generateLicenseFile
中<h:commandButton>
的{{1}}方法。此外,由于bean配置为<h:form>
,因此将在每个表单提交时创建它,并且@RequestScoped
字段在请求上创建时始终为generate
(因为您'它不会改变它的值,因为它将保持false
值。 bean的创建可以根据声明的范围而变化。更多信息:Communication in JSF 2: Managed bean scopes。
如果您想在视图中查看某些内容,我建议您稍微更改一下代码:
JSF代码
false
托管bean
<h:form>
#{agreement.generate}
<br />
<h:commandButton value="Generate License File" type="button"
action="#{agreement.generateLicenseFile}" />
</h:form>