我应该在$ .ajax()中使用什么URL来提交表单

时间:2014-09-29 08:47:02

标签: ajax forms url jsf-2

使用JSF2和ajax,我无法弄清楚JSF上下文中$ .ajax URL属性的值是什么,因为我想提交一个表单并更新停留在同一页面中的div

是以下吗?

((HttpServletRequest) facesContext.getExternalContext().getRequest()).getContextPath()`

2 个答案:

答案 0 :(得分:0)

在我看来,你需要将值传递给支持bean并设置参数,之后你需要更新这个部分(div)。

请参阅此http://www.mkyong.com/jsf2/4-ways-to-pass-parameter-from-jsf-page-to-backing-bean/

        <p:commandButton action="#{bean.setId}" update="div">
            <f:attribute name="id" value="12" />             
        </p:commandButton>  

另一种方法是使用闪存,请参阅:https://javaserverfaces.java.net/nonav/docs/2.0/javadocs/javax/faces/context/Flash.html

答案 1 :(得分:0)

假设你有一个这样的表格:

<div id="yourDivId">
    <h:outputText value='#{yourControllerClass.yourAttribute}'></h:outputText>
</div>
<h:form>
        <h:commandButton value="update">
                <f:ajax execute="@form" listener="#{yourControllerClass.updateAttribute}" 
                        render=":yourDiveId">
                </f:ajax>
        </h:commandButton>

</h:form>
在ControllerClass / bean中

public final void updateAttribute(AjaxBehaviorEvent event){
    // do what ever you want, get values, set another values, after that your Div will be auto updated
}

这样,你不需要关心ajax params或URL ......等等。

修改

如果你想从请求URL获得一个参数,那么你可以这样得到它:

String paramVal = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key);