1

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没有设置输入参数?

4

1 回答 1

0

好的,我发现您的方法存在一些问题:

<h:inputText id="inputForHD" value="#{myBean.inputParam}"></h:inputText>

你已经用这个bean映射了inputParam属性,为什么有一个新的Id“inputForHD”

使用 inputParam 本身,如果你想使用 inputForHD,你可以从 request Parameter 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>

这工作正常,如果有任何问题请告知。

于 2013-04-16T04:23:38.903 回答