我正在IBM Wepsphere门户5.1环境中使用RAD 7开发一个portlet。我有各种字段,使用ajax调用在后端弹出对象。这是为了在用户离开页面而不提交数据的情况下持久保存数据。输入是弹出窗口和下拉列表的组合。当用户想要永久存储数据时,他们会点击提交按钮。
我注意到当您在页面上填写超过一定数量的字段时,您需要单击两次“提交”按钮。第一个提交似乎只是刷新页面,并且不调用命令按钮后面的操作。第二个提交数据。
我已经做了很多测试,并意识到在提交按钮第一次工作之前,我可以做的7个ajax调用似乎有限制。即使我只改变一个字段8次也失败了。
以某种方式超过7次调用会使页面处于不同的状态。导航离开页面将修复它。即如果您填写所有字段然后转到菜单中的其他页面然后返回,您可以通过第一次点击提交。
jsp的典型下拉如下所示:
<h:panelGroup id="resultGroup">
<h:selectOneMenu syleClass="selectOneMenu" id="menu2" value="#{pc_CallView.result}">
<f:selectItems value="#{pc_CallView.results}" />
</h:selectOneMenu>
<hx:behavior event="onchange" target="menu2" behaviorAction="get;stop" targetAction="resultGroup">
</hx:behavior></h:panelGroup> <hx:ajaxRefreshRequest target="resultGroup" id="ajaxRefreshRequest6" params="menu2">
<hx:ajaxRefreshRequest> target="resultGroup" id="ajaxRefreshRequest6" params="menu2"></hx:ajaxRefreshRequest>
支持bean中的方法如下所示:
处理所选值:
public String getResult(){
String result = (String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("menu2");
if(result!=null && !result.trim().equalsIgnoreCase("")){
getHelper().getCallDetails().setResult(result);
}
return getHelper().getCallDetails().getResult();
}
填写下拉列表中的选项:
public List getResults(){
List results = getHelper().getCallResults();
List resultSelectItemsList = new ArrayList();
Iterator it = results.iterator();
resultSelectItemsList.add(new SelectItem("","-- select --"));
while(it.hasNext()){
ClientCallResult result = (ClientCallResult)it.next();
resultSelectItemsList.add(new SelectItem(result.getId(),result.getResult()));
}
return resultSelectItemsList;
}
提交按钮:
<hx:commandExButton
type="submit" value="Save " styleClass="commandExButton"
id="saveButton" action="#{pc_Footer.doSaveAction}" rendered="#{pc_Footer.showSave}" />
我想不出任何不寻常的东西,但我仍然遇到了问题。
以前有人见过这样的事吗?
此致
比尔
答案 0 :(得分:0)
我遇到了同样的问题..我找到的解决方案是get;停止正在解决这个问题...只需从behaviorAction中删除停止..然后你可以进行N个ajax调用......