1

このアプリは、次のように、メイン表示ページに3つのビューを表示しようとします。

  1. 「ページの上部」にあるAAAView
  2. 「ページの真ん中」にあるBBBView
  3. 「ページの下部」にあるCCCView

問題: アプリは実行されますが、上記のようにビュー(つまり、「AAAView」、「BBBView」、「CCCView」)を配置しません。

(たとえば、「AAAView」は「ページの下部」に表示され、「BBBView」と「CCCView」は「ページの中央」に表示されます...--これはなぜですか?)

この問題は、ActivityMapper / ActivityManagerクラスを誤用(誤解?)してビュー/パネルをメインページに適切に配置(または配置)した結果であると思います。

残念ながら、ActivityMapper/ActivityManagerクラスを適切に/効果的に使用する方法に関する包括的なドキュメントを見つけることができませんでした。(これまでに見たサンプルアプリは、一般的に複雑すぎて、ActivityMapper / ActivityManagerクラスがどのように機能して、パネル/ビューがメインページのどこに表示されるかを正確に特定できませんでした)

アプリで使用されるコードを以下に示します...

(私が間違っていることについてのアドバイスや説明をいただければ幸いです。....--そして、この概念に苦労しているのは私だけではないと思います)

助けてくれてありがとう!

/src/aaa/bbb/ccc/app.gwt.xml

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='app'>
    <inherits name='com.google.gwt.user.User' />
    <inherits name='com.google.gwt.user.theme.standard.Standard' />
    <inherits name="com.google.gwt.activity.Activity" />
    <inherits name="com.google.gwt.place.Place" />
    <entry-point class='aaa.bbb.ccc.client.AppEntryPoint' />
    <source path='client' />
    <source path='shared' />
</module>

/ src / aaa / bbb / ccc / client / AppEntryPoint

package aaa.bbb.ccc.client;

import com.google.gwt.activity.shared.ActivityManager;

public class AppEntryPoint extends LayoutPanel implements EntryPoint
{

    private LayoutPanel mainView = null;

    interface AppEntryPointUiBinder extends UiBinder<LayoutPanel, AppEntryPoint>
    {
    }

    private static AppEntryPointUiBinder uiBinder = GWT.create(AppEntryPointUiBinder.class);

    @UiField
    SimplePanel topOfPage;

    @UiField
    SimplePanel middleOfPage;

    @UiField
    SimplePanel bottomOfPage;

    public AppEntryPoint()
    {
        super();
    }

    AcceptsOneWidget top = new AcceptsOneWidget()
    {
        public void setWidget(IsWidget activityWidget)
        {
            Widget widget = Widget.asWidgetOrNull(activityWidget);
            mainView.setWidgetVisible(topOfPage, widget != null);
            topOfPage.setWidget(widget);
        }
    };

    AcceptsOneWidget mid = new AcceptsOneWidget()
    {
        public void setWidget(IsWidget activityWidget)
        {
            Widget widget = Widget.asWidgetOrNull(activityWidget);
            mainView.setWidgetVisible(middleOfPage, widget != null);
            middleOfPage.setWidget(widget);
        }
    };    

    AcceptsOneWidget bot = new AcceptsOneWidget()
    {
        public void setWidget(IsWidget activityWidget)
        {
            Widget widget = Widget.asWidgetOrNull(activityWidget);
            mainView.setWidgetVisible(bottomOfPage, widget != null);
            bottomOfPage.setWidget(widget);
        }
    };

    public void onModuleLoad()
    {
        ClientFactory clientFactory = GWT.create(ClientFactory.class);
        mainView = uiBinder.createAndBindUi(this);
        EventBus eventBus = clientFactory.getEventBus();

        ActivityMapper aaaActivityMapper = new AAAActivityMapper(clientFactory);
        ActivityManager aaaActivityManager = new ActivityManager(aaaActivityMapper, eventBus);
        aaaActivityManager.setDisplay(top);

        ActivityMapper bbbActivityMapper = new BBBActivityMapper(clientFactory);
        ActivityManager bbbActivityManager = new ActivityManager(bbbActivityMapper, eventBus);
        bbbActivityManager.setDisplay(mid);

        ActivityMapper cccActivityMapper = new CCCActivityMapper(clientFactory);
        ActivityManager cccActivityManager = new ActivityManager(cccActivityMapper, eventBus);
        cccActivityManager.setDisplay(bot);

        AppPlaceHistoryMapper historyMapper = GWT.create(AppPlaceHistoryMapper.class);

        PlaceController placeController = clientFactory.getPlaceController();
        PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(historyMapper);
        historyHandler.register(placeController, eventBus, new AAAPlace());

        RootLayoutPanel.get().add(mainView);
        historyHandler.handleCurrentHistory();
    }
}

/src/aaa/bbb/ccc/client/AppEntryPoint.ui.xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:h='urn:import:aaa.bbb.ccc.client'>
    <ui:style src="app.css" />
    <g:LayoutPanel width="800" height='600'>
        <g:layer left='10%' right='10%' top='4px' height='10em'>
            <g:SimplePanel ui:field="topOfPage"/>
        </g:layer>
        <g:layer left='10%' right='10%' top='204px' height='10em'>
            <g:SimplePanel ui:field="middleOfPage"/>
        </g:layer>
        <g:layer left='10%' right='10%' top='404px' height='10em'>
            <g:SimplePanel ui:field="bottomOfPage"/>
        </g:layer>
    </g:LayoutPanel>
</ui:UiBinder>

/src/aaa/bbb/ccc/client/ClientFactory.java

package aaa.bbb.ccc.client;

import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.place.shared.PlaceController;

public class ClientFactory
{
    public ClientFactory()
    {
    }

    private static final EventBus eventBus = new SimpleEventBus();
    private static final PlaceController placeController = new PlaceController(eventBus);
    private static final AAAView aaaView = new AAAView();
    private static final BBBView bbbView = new BBBView();
    private static final CCCView cccView = new CCCView();

    public EventBus getEventBus()
    {
        return eventBus;
    }

    public PlaceController getPlaceController()
    {
        return placeController;
    }

    public AAAView getAAAView()
    {
        return aaaView;
    }

    public BBBView getBBBView()
    {
        return bbbView;
    }

    public CCCView getCCCView()
    {
        return cccView;
    }
}

/src/aaa/bbb/ccc/client/AppPlaceHistoryMapper.java

package aaa.bbb.ccc.client;

import com.google.gwt.place.shared.PlaceHistoryMapper;
import com.google.gwt.place.shared.WithTokenizers;

@WithTokenizers({AAAPlace.Tokenizer.class, BBBPlace.Tokenizer.class })
public interface AppPlaceHistoryMapper extends PlaceHistoryMapper
{
}

/src/aaa/bbb/ccc/client/AAAView.java

package aaa.bbb.ccc.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;

public class AAAView extends SimplePanel implements IsWidget, AcceptsOneWidget
{
    private final HTMLPanel aaaView;
    private Presenter presenter;

    private static AAAViewUiBinder uiBinder = GWT.create(AAAViewUiBinder.class);   
    interface AAAViewUiBinder extends UiBinder<HTMLPanel, AAAView>
    {
    }

    public AAAView()
    {
        aaaView = uiBinder.createAndBindUi(this);
    }

    @UiField
    Label aaaViewLabel;

    @UiField
    Button bbbButton;

    @UiHandler("bbbButton")
    void onBBBButtonClicked(ClickEvent event)
    {
        presenter.gotoBBBPlace();
    }

    @UiField
    Button cccButton;

    @UiHandler("cccButton")
    void onCCCButtonClicked(ClickEvent event)
    {
        presenter.gotoCCCPlace();
    }

    public void setName(String name)
    {
        aaaViewLabel.setText(name);
    }

    public void setPresenter(Presenter presenter)
    {
        this.presenter = presenter;
    }    
    public interface Presenter
    {
        void gotoBBBPlace();
        void gotoCCCPlace();
    }

    @Override
    public Widget asWidget()
    {
        return aaaView;
    }
}

/src/aaa/bbb/ccc/client/AAAView.ui.xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <ui:style src="app.css" />
    <g:HTMLPanel  ui:field="aaaView" styleName='{style.aaaView}'>
        <g:Label  ui:field="aaaViewLabel" text="AAAView" styleName='{style.viewLabel}'></g:Label>
        <g:Button ui:field="bbbButton" text="go to bbbView"></g:Button>
        <g:Button ui:field="cccButton" text="go to cccView"></g:Button>
    </g:HTMLPanel>
</ui:UiBinder>

/src/aaa/bbb/ccc/client/AAAActivity.java

package aaa.bbb.ccc.client;

import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.ui.AcceptsOneWidget;

public class AAAActivity extends AbstractActivity implements AAAView.Presenter
{
    private String name = "...the AAAView...";    
    private final AAAView aaaView;
    private final PlaceController placeController;

    public AAAActivity(ClientFactory clientFactory)
    {
        aaaView = clientFactory.getAAAView();
        placeController = clientFactory.getPlaceController();
    }

    @Override
    public void start(AcceptsOneWidget panel, EventBus eventBus)
    {
        aaaView.setPresenter(this);
        aaaView.setName(name);
        panel.setWidget(aaaView.asWidget());
    }    

    @Override
    public void gotoBBBPlace()
    {
        placeController.goTo(new BBBPlace());
    }

    @Override
    public void gotoCCCPlace()
    {
        placeController.goTo(new CCCPlace());
    }    
}

/src/aaa/bbb/ccc/client/AAAActivityMapper.java

package aaa.bbb.ccc.client;

import com.google.gwt.activity.shared.Activity;
import com.google.gwt.activity.shared.ActivityMapper;
import com.google.gwt.place.shared.Place;

public class AAAActivityMapper implements ActivityMapper
{
    private ClientFactory clientFactory;

    public AAAActivityMapper(ClientFactory clientFactory)
    {
        this.clientFactory = clientFactory;
    }

    @Override
    public Activity getActivity(Place place)
    {

        if (place instanceof BBBPlace)
        {
            return new BBBActivity(clientFactory);//return bbbActivityMapper.getActivity(place);
        }
        else
        if (place instanceof CCCPlace)
        {
            return new CCCActivity(clientFactory);//return cccActivityMapper.getActivity(place);
        }

        return null;
    }
}

/src/aaa/bbb/ccc/client/AAAPlace.java

package aaa.bbb.ccc.client;

import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceTokenizer;
import com.google.gwt.place.shared.Prefix;

public class AAAPlace extends Place
{
    private String aaaName = "AAAPlace";

    public AAAPlace()
    {
    }

    public String getAAAName()
    {
        return aaaName;
    }

    @Prefix("AAAPlace")
    public static class Tokenizer implements PlaceTokenizer<AAAPlace>
    {
        @Override
        public String getToken(AAAPlace place)
        {
            return place.getAAAName(); //"AAAName"; //place.getAAAName();
        }

        @Override
        public AAAPlace getPlace(String token)
        {
            return new AAAPlace();
        }
    }
}

/src/aaa/bbb/ccc/client/BBBView.java

package aaa.bbb.ccc.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;

public class BBBView extends SimplePanel implements IsWidget, AcceptsOneWidget
{
    private final HTMLPanel bbbView;
    private Presenter presenter;

    private static BBBViewUiBinder uiBinder = GWT.create(BBBViewUiBinder.class);    
    interface BBBViewUiBinder extends UiBinder<HTMLPanel, BBBView>
    {
    }

    public BBBView()
    {
        bbbView = uiBinder.createAndBindUi(this);
    }

    @UiField
    Label bbbViewLabel;

    @UiField
    Button aaaButton; 

    @UiHandler("aaaButton")
    void onAAAButtonClicked(ClickEvent event)
    {
        presenter.gotoAAAPlace();
    }

    @UiField
    Button cccButton; 

    @UiHandler("cccButton")
    void onCCCButtonClicked(ClickEvent event)
    {
        presenter.gotoCCCPlace();
    }

    public void setName(String name)
    {
        bbbViewLabel.setText(name);
    }

    public void setPresenter(Presenter presenter)
    {
        this.presenter = presenter;
    }    
    public interface Presenter
    {
        void gotoAAAPlace();
        void gotoCCCPlace();
    }

    @Override
    public Widget asWidget()
    {
        return bbbView;
    }
}

/src/aaa/bbb/ccc/client/BBBView.ui.xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <ui:style src="app.css" />
    <g:HTMLPanel  ui:field="bbbView" styleName='{style.bbbView}'>
        <g:Label  ui:field="bbbViewLabel" text="BBBView" styleName='{style.viewLabel}'></g:Label>
        <g:Button ui:field="aaaButton" text="go to aaaView"></g:Button>
        <g:Button ui:field="cccButton" text="go to cccView"></g:Button>
    </g:HTMLPanel>
</ui:UiBinder> 

/src/aaa/bbb/ccc/client/BBBActivity.java

package aaa.bbb.ccc.client;

import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.ui.AcceptsOneWidget;

public class BBBActivity extends AbstractActivity implements BBBView.Presenter
{
    private String name = "...the BBBView...";    
    private final BBBView bbbView;
    private final PlaceController placeController;

    public BBBActivity(ClientFactory clientFactory)
    {
        bbbView = clientFactory.getBBBView();
        placeController = clientFactory.getPlaceController();
    }

    @Override
    public void start(AcceptsOneWidget panel, EventBus eventBus)
    {
        bbbView.setPresenter(this);
        bbbView.setName(name);
        panel.setWidget(bbbView.asWidget());
    }    

    @Override
    public void gotoAAAPlace()
    {
        placeController.goTo(new AAAPlace());
    }

    @Override
    public void gotoCCCPlace()
    {
        placeController.goTo(new CCCPlace());
    }
}

/src/aaa/bbb/ccc/client/BBBActivityMapper.java

package aaa.bbb.ccc.client;

import com.google.gwt.activity.shared.Activity;
import com.google.gwt.activity.shared.ActivityMapper;
import com.google.gwt.place.shared.Place;

public class BBBActivityMapper implements ActivityMapper
{
    private ClientFactory clientFactory;

    public BBBActivityMapper(ClientFactory clientFactory)
    {
        this.clientFactory = clientFactory;
    }

    @Override
    public Activity getActivity(Place place)
    {
        if (place instanceof AAAPlace)
        {
            return new AAAActivity(clientFactory);//aaaActivityMapper.getActivity(place);
        }
        else
        if (place instanceof CCCPlace)
        {
            return new CCCActivity(clientFactory);//return cccActivityMapper.getActivity(place);
        }

        return null;
    }
}

/src/aaa/bbb/ccc/client/BBBPlace.java

package aaa.bbb.ccc.client;

import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceTokenizer;
import com.google.gwt.place.shared.Prefix;

public class BBBPlace extends Place
{
    private String bbbName = "BBBPlace";

    public BBBPlace()
    {
    }

    public String getBBBName()
    {
        return bbbName;
    }

    @Prefix("BBBPlace")
    public static class Tokenizer implements PlaceTokenizer<BBBPlace>
    {
        @Override
        public String getToken(BBBPlace place)
        {
            return place.getBBBName(); //"BBBName"; //place.getBBBName();
        }

        @Override
        public BBBPlace getPlace(String token)
        {
            return new BBBPlace();
        }
    }
}

/src/aaa/bbb/ccc/client/CCCView.java

package aaa.bbb.ccc.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;

public class CCCView extends SimplePanel implements IsWidget, AcceptsOneWidget
{
    private final HTMLPanel cccView;
    private Presenter presenter;

    private static CCCViewUiBinder uiBinder = GWT.create(CCCViewUiBinder.class);   
    interface CCCViewUiBinder extends UiBinder<HTMLPanel, CCCView>
    {
    }

    public CCCView()
    {
        cccView = uiBinder.createAndBindUi(this);
    }

    @UiField
    Label cccViewLabel;

    @UiField
    Button aaaButton;

    @UiHandler("aaaButton")
    void onAAAButtonClicked(ClickEvent event)
    {
        presenter.gotoAAAPlace();
    }

    @UiField
    Button bbbButton;

    @UiHandler("bbbButton")
    void onBBBButtonClicked(ClickEvent event)
    {
        presenter.gotoBBBPlace();
    }

    public void setName(String name)
    {
        cccViewLabel.setText(name);
    }

    public void setPresenter(Presenter presenter)
    {
        this.presenter = presenter;
    }    
    public interface Presenter
    {
        void gotoAAAPlace();
        void gotoBBBPlace();
    }

    @Override
    public Widget asWidget()
    {
        return cccView;
    }
}

/src/aaa/bbb/ccc/client/BBBView.ui.xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <ui:style src="app.css" />
    <g:HTMLPanel  ui:field="cccView" styleName='{style.cccView}'>
        <g:Label  ui:field="cccViewLabel" text="CCCView" styleName='{style.viewLabel}'></g:Label>
        <g:Button ui:field="aaaButton" text="go to aaaView"></g:Button>
        <g:Button ui:field="bbbButton" text="go to bbbView"></g:Button>
    </g:HTMLPanel>
</ui:UiBinder>

/src/aaa/bbb/ccc/client/CCCActivity.java

package aaa.bbb.ccc.client;

import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.ui.AcceptsOneWidget;

public class CCCActivity extends AbstractActivity implements CCCView.Presenter
{
    private String name = "...the CCCView...";    
    private final CCCView cccView;
    private final PlaceController placeController;

    public CCCActivity(ClientFactory clientFactory)
    {
        cccView = clientFactory.getCCCView();
        placeController = clientFactory.getPlaceController();
    }

    @Override
    public void start(AcceptsOneWidget panel, EventBus eventBus)
    {
        cccView.setPresenter(this);
        cccView.setName(name);
        panel.setWidget(cccView.asWidget());
    }    

    @Override
    public void gotoAAAPlace()
    {
        placeController.goTo(new AAAPlace());
    }

    @Override
    public void gotoBBBPlace()
    {
        placeController.goTo(new BBBPlace());
    }    
}

/src/aaa/bbb/ccc/client/CCCActivityMapper.java

package aaa.bbb.ccc.client;

import com.google.gwt.activity.shared.Activity;
import com.google.gwt.activity.shared.ActivityMapper;
import com.google.gwt.place.shared.Place;

public class CCCActivityMapper implements ActivityMapper
{
    private ClientFactory clientFactory;

    public CCCActivityMapper(ClientFactory clientFactory)
    {
        this.clientFactory = clientFactory;
    }

    @Override
    public Activity getActivity(Place place)
    {
        if (place instanceof AAAPlace)
        {
            return new AAAActivity(clientFactory);//return aaaActivityMapper.getActivity(place);
        }
        else
        if (place instanceof BBBPlace)
        {
            return new BBBActivity(clientFactory);//return aaaActivityMapper.getActivity(place);
        }

        return null;
    }
}

/src/aaa/bbb/ccc/client/CCCPlace.java

package aaa.bbb.ccc.client;

import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceTokenizer;
import com.google.gwt.place.shared.Prefix;

public class CCCPlace extends Place
{
    private String cccName = "CCCPlace";

    public CCCPlace()
    {
    }

    public String getCCCName()
    {
        return cccName;
    }

    @Prefix("CCCPlace")
    public static class Tokenizer implements PlaceTokenizer<CCCPlace>
    {
        @Override
        public String getToken(CCCPlace place)
        {
            return place.getCCCName(); //"CCCName"; //place.getCCCName();
        }

        @Override
        public CCCPlace getPlace(String token)
        {
            return new CCCPlace();
        }
    }
}

/src/aaa/bbb/ccc/client/app.css

h1 {
    font-size: 2em;
    font-weight: bold;
    color: #777777;
    margin: 40px 0px 70px;
    text-align: center;
}

.aaaView {
    border-color: black;
    border-width: 2 px;
    background-color: navy;
    width: 75%;
    height: 25%;
}

.viewLabel {
    color:white;
    font-size: 24px; 
    font-style: italic;
    font-weight: bolder; 
    border-width: 2 px;
}

.bbbView {
    border-color: black;
    border-width: 2 px;
    background-color: blue;
    width: 75%;
    height: 25%;
}

.cccView {
    border-color: black;
    border-width: 2 px;
    background-color: lightblue;
    width: 75%;
    height: 25%;
}


.layer1 {
    border-color: red;
    border-width: 2 px;
    background-color: yellow;
    width: 100%;
    height: 33%;
}

.layer2 {
    border-color: teal;
    border-width: 2 px;
    background-color: green;
    width: 100%;
    height: 33%;
}

.layer3 {
    border-color: grey;
    border-width: 2 px;
    background-color: aqua;
    width: 100%;
    height: 33%;
}

.gwt-layer {
    border-color: grey;
    border-width: 2 px;
    background-color: aqua;
    width: 100%;
    height: 33%;    
}

/war/app.html

<!doctype html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>app</title>
    <script type="text/javascript" language="javascript" src="app/app.nocache.js"></script>
  </head>
  <body>
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
    <noscript>
      <div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
        Your web browser must have JavaScript enabled
        in order for this application to display correctly.
      </div>
    </noscript>
  </body>
</html>

/war/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>app</display-name>
  <welcome-file-list>
    <welcome-file>app.html</welcome-file>
  </welcome-file-list>
</web-app>
4

1 に答える 1

1

問題はあなたにありますActivityMapper

(これはデフォルトの場所であるため、URLに履歴トークンAAAPlaceがない場合に使用される場所です)に移動すると、次のようになります。

  • AAAActivityMappernull(与えられたaaaActivityManagertopOfPage領域を非表示にするリターン
  • BBBActivityMapperを返します。これは、領域にAAAActivity(シングルトン)を表示します。AAAViewmiddleOfPage
  • CCCActivityMapper別のを返します。これは、領域にAAAActivity(シングルトン)を表示します。はウィジェットであるため、一度に1つの場所にしか表示できません。また、シングルトンであるため、最後のものが優先されます(ウィジェットを新しい親に追加する前に、前の親からウィジェットを削除します)。の後に初期化し、イベントハンドラーが登録順に呼び出されるため、が勝ちます。これにより、非表示、空(空でない値で呼び出されたため非表示ではありませんが、その直後に同じウィジェットで呼び出され、からそれを盗んでに入れる)、およびAAAViewbottomOfPageAAAViewsetWidgetcccActivityManagerbbbActivityManagerbottopOfPagemiddleOfPagemidbotmiddleOfPagebottomOfPageAAAViewbottomOfPage

恥知らずなプラグイン:http://blog.ltgt.net/gwt-21-activities/(および場所とアクティビティに関する兄弟の記事)をご覧ください。すべてがどのように機能するかを理解するのに役立つことを願っています。

于 2011-04-06T21:48:56.223 に答える