我正在 IBM Wepsphere 门户 5.1 环境中使用 RAD 7 开发一个 portlet。我有各种字段,它们使用 ajax 调用在后端填充对象。这是为了在用户离开页面而没有提交数据的情况下保留数据。输入是弹出窗口和下拉菜单的组合。当用户想要永久存储数据时,他们会单击提交按钮。
我注意到当您在页面上填写超过一定数量的字段时,您需要单击两次提交按钮。第一次提交似乎只是刷新页面,并没有调用命令按钮后面的操作。第二个提交数据。
我已经对此进行了大量测试,并意识到在提交按钮第一次无法工作之前,我可以执行的 ajax 调用似乎有 7 个限制。即使我只是将一个字段更改 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}" />
没有什么不寻常的我会想到的,但我仍然遇到了问题。
有没有人见过这样的事情?
问候
账单