使用JSF2和ajax,我无法弄清楚JSF上下文中$ .ajax URL属性的值是什么,因为我想提交一个表单并更新停留在同一页面中的div
是以下吗?
((HttpServletRequest) facesContext.getExternalContext().getRequest()).getContextPath()`
答案 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);