2010-03-09 64 views
0

如何在特立尼達使用commandButton彈出窗口?如何使用commandButton在特立尼達彈出窗口?

我的問題是,通過點擊Add按鈕從dialogdemo.jspx,沒有任何彈出窗口或對話框打開。

這是dialogdemo.jspx文件:

<jsp:root 
    xmlns:jsp="http://java.sun.com/JSP/Page" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:tr="http://myfaces.apache.org/trinidad" 
    version="1.2"> 
    <jsp:directive.page contentType="text/html;charset=utf-8" /> 
    <f:view> 
     <tr:document title="Dialog Demo"> 
      <tr:form> 
       <!-- 
        The field for the value; we point partialTriggers at the 
        button to ensure it gets redrawn when we return 
       --> 
       <tr:inputText label="Pick a number:" partialTriggers="buttonId" 
        value="#{launchDialog.input}" /> 
       <!-- 
        The button for launching the dialog: we've also configured 
        the width and height of that window 
       --> 
       <tr:commandButton text="Add" action="dialog:chooseInteger" 
        id="buttonId" windowWidth="300" windowHeight="200" 
        partialSubmit="true" useWindow="true" 
        returnListener="#{launchDialog.returned}" /> 
      </tr:form> 
     </tr:document> 
    </f:view> 
</jsp:root> 

下面是相關的託管bean LaunchDialogBean.java

package jsfpkg; 

import org.apache.myfaces.trinidad.component.UIXInput; 
import org.apache.myfaces.trinidad.event.ReturnEvent; 

public class LaunchDialogBean { 
    private UIXInput _input; 

    public UIXInput getInput() { 
     return _input; 
    } 

    public void setInput(UIXInput input) { 
     _input = input; 
    } 

    public void returned(ReturnEvent event) { 
     if (event.getReturnValue() != null) { 
      getInput().setSubmittedValue(null); 
      getInput().setValue(event.getReturnValue()); 
     } 
    } 

} 

這裏是彈出文件Popup.jspx

<jsp:root 
    xmlns:jsp="http://java.sun.com/JSP/Page" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:trh="http://myfaces.apache.org/trinidad/html" 
    xmlns:tr="http://myfaces.apache.org/trinidad" 
    version="2.0"> 
    <jsp:directive.page contentType="text/html;charset=utf-8" /> 
    <f:view> 
     <tr:document title="Add dialog"> 
      <tr:form> 
       <!-- Two input fields --> 
       <tr:panelForm> 
        <tr:inputText label="Number 1:" value="#{chooseInteger.value1}" 
         required="true" /> 
        <tr:inputText label="Number 2:" value="#{chooseInteger.value2}" 
         required="true" /> 
       </tr:panelForm> 

       <!-- Two buttons --> 
       <tr:panelGroup layout="horizontal"> 
        <tr:commandButton text="Submit" action="#{chooseInteger.select}" /> 
        <tr:commandButton text="Cancel" immediate="true" 
         action="#{chooseInteger.cancel}" /> 
       </tr:panelGroup> 
      </tr:form> 
     </tr:document> 
    </f:view> 
</jsp:root> 

對於我寫豆ChooseIntegerBean.java

package jsfpkg; 

import org.apache.myfaces.trinidad.context.RequestContext; 

public class ChooseIntegerBean { 

    private Integer _value1; 
    private Integer _value2; 

    public Integer getValue1() { 
     return _value1; 
    } 

    public void setValue1(Integer value1) { 
     _value1 = value1; 
    } 

    public Integer getValue2() { 
     return _value2; 
    } 

    public void setValue2(Integer value2) { 
     _value2 = value2; 
    } 

    public String cancel() { 
     RequestContext.getCurrentInstance().returnFromDialog(null, null); 
     return null; 
    } 

    public String select() { 
     Integer value = new Integer(getValue1().intValue() + getValue2().intValue()); 
     RequestContext.getCurrentInstance().returnFromDialog(value, null); 
     return null; 
    } 

} 

這裏是我的faces-config.xml

<managed-bean> 
    <managed-bean-name>chooseInteger</managed-bean-name> 
    <managed-bean-class>jsfpkg.ChooseIntegerBean</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

<managed-bean> 
    <managed-bean-name>launchDialog</managed-bean-name> 
    <managed-bean-class>jsfpkg.LaunchDialogBean</managed-bean-class> 
    <managed-bean-scope> 
     request 
    </managed-bean-scope> 
</managed-bean> 

<navigation-rule> 
    <from-view-id>/dialogdemo.jspx</from-view-id> 
    <navigation-case> 
     <from-outcome>dialog:chooseInteger</from-outcome> 
     <to-view-id>/dialogbox.jspx</to-view-id> 
    </navigation-case> 
</navigation-rule> 

回答

-1

嘗試首先從你刪除/dialogdemo.jspx配置文件。第二次只刪除文件名前面的/上面的標記。

+1

就更不用說了,我試着刪除「/」,這是導航目標的要求。他們必須以「/」開頭(根據我收到的錯誤信息)。 – 2013-09-12 13:47:24

2

我覺得你的命令按鈕的動作是錯誤的:

<tr:commandButton text="Submit" action="#{chooseIntegerBean.select}" windowWidth="300" windowHeight="200"     
       partialSubmit="true" useWindow="true" /> 

,並在您ChooseIntegerBean:

public String select() 
{ 
    //other things    
    return "dialog:chooseInteger"; 
} 

,並在web.xml:

<context-param><param-name>org.apache.myfaces.trinidad.ENABLE_LIGHTWEIGHT_DIALOGS</param-name><param-value>true</param-value></context-param>