Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 理解JSF中的导航_Jsf 2 - Fatal编程技术网

Jsf 2 理解JSF中的导航

Jsf 2 理解JSF中的导航,jsf-2,Jsf 2,尝试构建一个简单的JSF应用程序。我不明白的一点是,使用什么机制来触发页面重新加载。我试过跟随 <h:selectOneMenu id="ChallengesListBox" onchange="submit()" valueChangeListener="#{bean.projectselected}"> <f:selectItems value="#{bean.projectnames}"/> </h:selectOneMe

尝试构建一个简单的JSF应用程序。我不明白的一点是,使用什么机制来触发页面重新加载。我试过跟随

<h:selectOneMenu 
    id="ChallengesListBox" 
    onchange="submit()" 
    valueChangeListener="#{bean.projectselected}">
    <f:selectItems value="#{bean.projectnames}"/>
</h:selectOneMenu>

<h:commandButton value="submit" action="#{bean.submit}" />
但这没有效果。bean方法

public String submit()

保持不变,正如我在调试模式中看到的。

这与导航无关。没有调用bean操作方法的原因有很多。您可以在以下答案中找到它们:

我怀疑您可能只是没有,或者表单中有多个按钮,第一个按钮将在提交时调用,或者在处理表单提交时按钮本身没有呈现

与具体问题无关,这种JSF1.x风格的方法非常笨拙。由于您显然已经在使用JSF 2.x,我建议使用以下更简单的方法:

<h:selectOneMenu value="#{bean.projectname}">
    <f:selectItems value="#{bean.projectnames}" />
    <f:ajax render="somepanel" />
</h:selectOneMenu>
<h:panelGroup id="somepanel">
    <h:outputText value="#{bean.description}" rendered="#{not empty bean.projectname}" />
</h:panelGroup>
根据下拉列表的选择,{bean.projectname}不为空时,这将呈现{bean.description}值

并确保删除了支持bean的所有绑定属性。此外,还应确保只要在内部有输入/按钮组件,该bean都是@viewscope

<h:selectOneMenu value="#{bean.projectname}">
    <f:selectItems value="#{bean.projectnames}" />
    <f:ajax render="somepanel" />
</h:selectOneMenu>
<h:panelGroup id="somepanel">
    <h:outputText value="#{bean.description}" rendered="#{not empty bean.projectname}" />
</h:panelGroup>