myBean
位于request
范围内。
<h:form id="indexFormID">
<a4j:outputPanel ajaxRendered="true" layout="block">
<h:inputText id="inputForHD" value="#{myBean.inputParam}"></h:inputText>
<a4j:commandLink value="Submit" action="#{myBean.myMethod}" reRender="renderSuccess" process="indexFormID:inputForHD"></a4j:commandLink>
</a4j:outputPanel>
<h:panelGroup id="renderSuccess">
<h:panelGroup rendered="#{myBean.someBoolean}">
//Some other JSF components go here
</h:panelGroup>
</h:panelGroup>
</h:form>
MyBean
类定义:
private String inputParam;
//Getters and setters are there
public String myMethod()
{
log.debug("~ Value of inputParam" +this.getInputParam()); //This is printing null value for inputParam
//when commandLink is clicked
return null;
}
为什么我的inputParam
没有设置输入参数?
答案 0 :(得分:0)
好的,我发现您的方法几乎没有问题:
<h:inputText id="inputForHD" value="#{myBean.inputParam}"></h:inputText>
您已经使用此bean映射inputParam属性,为什么有一个新的Id“inputForHD”
使用inputParam本身,如果你想使用inputForHD,你可以从请求参数map中选择相同的。
String inputForHD = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("indexFormID:inputForHD");
同样如前所述,将输出面板包裹在a4j面板中,例如
<h:panelGroup id="renderSuccess">
<h:panelGroup rendered="#{helloWorld.someBoolean}">
//Some other JSF components go here
<h:inputText id="inputForHDasdasd" value="#{helloWorld.inputParam}"></h:inputText>
</h:panelGroup>
</h:panelGroup>
这很好,让我们知道是否有任何问题。