【问题标题】:How to create a modal dialog with Trinidad and facelets如何使用 Trinidad 和 facelets 创建模态对话框
【发布时间】:2013-09-11 19:43:04
【问题描述】:

我正在尝试创建一个模式对话框,当按下 tr:commandNavigationItem 时会弹出该对话框。 我可以弹出一个弹出窗口,当我单击我创建的“取消”按钮时,它会调用 returnListener,但弹出窗口本身不会消失。调用“提交”按钮会导致异常。

该网站正在使用 facelets,因此调用页面具有它使用的模板。

我在日志中收到以下警告:

W org.apache.myfaces.trinidad.component.UIXComponentBase getClientId getClientId should not be called while the view is being constructed. Component ID: holdOrder_hold

W com.ibm.ws.webcontainer.srt.SRTServletResponse setIntHeader SRVE8094W: WARNING: Cannot set header. Response already committed.

这里是调用页面(.xhtml):

<tr:navigationPane hint="bar" inlineStyle="width:100%;" id="completeNavBar">
  ...
  <tr:commandNavigationItem id="holdButton" text="#{odMessages['BUTTON_HOLD_ORDER']}" partialSubmit="true" useWindow="true" rendered="#{taskHandler.holdAndReleaseEnabled}" action="dialog:holdOrder" immidiate="true" returnListener="#{taskHandler.handleReturnHoldDialog}" windowHeight="350" windowWidth="800"/>
  ...
</tr:navigationPane>

这是完整的对话页面 (.xhtml):

<ui:composition
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:tr="http://myfaces.apache.org/trinidad"
  xmlns:trd="http://myfaces.apache.org/trinidad/demo"
  xmlns:trh="http://myfaces.apache.org/trinidad/html"> 
  <jsp:directive.page contentType="text/html;charset=utf-8"/>
  <f:view>
    <tr:document title="Put Order On Hold">
            <tr:form>
                <tr:messages globalOnly="true"/>
                <tr:panelFormLayout>

                    <tr:inputText id="holdOrder_comment" rows="5" label="Comment:" value="#{taskHandler.task.holdObj.holdComment}" />

                    <f:facet name="footer">
                        <tr:commandButton id="holdOrder_hold" actionListener="#{taskHandler.holdToDo}" text="Submit" partialSubmit="true"/>
                        <tr:commandButton id="holdOrder_cancel" actionListener="#{taskHandler.cancelDialog}" text="cancel" partialSubmit="true"/>
                    </f:facet>
                </tr:panelFormLayout>
            </tr:form>
    </tr:document>
  </f:view>
</ui:composition>

这是使用的单一支持 bean:

@ManagedBean
@ViewScoped
public class TaskHandler implements Serializable {

...

    public void holdToDo(ActionEvent event) {
        System.out.println("putting on hold");
        HashMap<Object, Object> returnMap = new HashMap<Object, Object>();
        try {
            boolean response = ToDoHold.execute(task);

            if(!response) {

                returnMap.put("returnValue", "no validation errors");
            }
        } catch (Exception e) {
            System.out.println("exception in holdToDo");
            e.printStackTrace();
        }

        RequestContext.getCurrentInstance().returnFromDialog(Boolean.TRUE, returnMap);
    }

    public void handleReturnHoldDialog(ReturnEvent event) {
        System.out.println("returning hold Dialog");
    }

    public void cancelDialog(ActionEvent event) {
        System.out.println("cancelling dialog");
        try {
            HashMap<Object, Object> returnMap = new HashMap<Object, Object>();
            returnMap.put("returnValue", "cancel");
            RequestContext.getCurrentInstance().returnFromDialog(Boolean.FALSE, returnMap);
        } catch(Exception e) {
            System.out.println("cancelling dialog: exception");
            e.printStackTrace();
        }
    }
...

}

使用的版本: 特立尼达 2.0.1 JSF 2.0 小服务程序 3

【问题讨论】:

  • 这是在黑暗中拍摄,但不应该是:public void cancelDialog(ReturnEvent event)
  • 感谢您的帮助!但它没有用。 cancelDialog 只是对话框中的一个按钮,应该关闭对话框。所以我将它实现为对话框内 CommandButton 上的 ActionListener。将其更改为接受 ReturnEvent 会导致错误提示找不到方法(因为 ActionListener 期待 ActionEvent)。

标签: jsf-2 dialog servlet-3.0 websphere-8 trinidad


【解决方案1】:

所以我从来没有完全解决这个问题,但事实证明问题是在对话框中使用&lt;f:facet name="footer"&gt;(上面提供了 XHTML)是导致问题的原因,并且删除方面导致两个按钮开始正常工作.这可能是一个错误,但由于公司准则,我使用的是非最新版本的 trinidad (1.26)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多