h:inputText不能与a4j:commandLink一起使用

时间:2013-04-15 14:00:59

标签: jsf richfaces jsf-1.2

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

1 个答案:

答案 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>

这很好,让我们知道是否有任何问题。