0

我正在 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}" />

没有什么不寻常的我会想到的,但我仍然遇到了问题。

有没有人见过这样的事情?

问候

账单

4

1 回答 1

0

我遇到了同样的问题..我找到的解决方案是 get;stop 正在解决这个问题...只需从 behaviorAction 中删除 stop ..然后您可以进行 N 次 ajax 调用...

于 2011-09-07T04:38:43.980 回答