开发者

How can I get popup window using commandButton in Trinidad?

开发者 https://www.devze.com 2022-12-22 04:10 出处:网络
How can I get popup window using commandButton in Trinidad? My problem is that by clicking on Add button from dialogdemo.jspx, not any popup window or dialog box is opened.

How can I get popup window using commandButton in Trinidad?

My problem is that by clicking on Add button from dialogdemo.jspx, not any popup window or dialog box is opened.

This is dialogdemo.jspx file:

<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>

Here is the associated managed 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());
        }
    }

}

Here is the popup file 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>

For that I have written the bean 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;
    }

}

Here is my faces-config.xml:

<managed-bean>
    <managed-bean-name>chooseInteger</managed-bean-name>
    <managed-bean-class>jsfpkg.ChooseIntegerBean</managed-bean-class>
    <managed-bea开发者_开发百科n-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>


I think action of your commandButton is wrong:

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

and in your ChooseIntegerBean:

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

and in web.xml:

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


try removing /dialogdemo.jspx from you config file first. second time just remove the / in above tag in front of the file name.

0

精彩评论

暂无评论...
验证码 换一张
取 消