#m:と#tの2つのトークンを同時に表示することはできません。同時に2つの場所に表示することはできません。
したがって、タブとツリーの両方が同時に表示されている場合は、両方の状態を同じ場所にまとめて保存する必要があります。
これは多かれ少なかれ必要なものです。
public class ExamplePlace extends Place {
public String treePosition = "/";
public int tabIndex = 0;
public ExamplePlace() {
super();
}
public ExamplePlace(String treePosition, int tabIndex) {
this.treePosition = treePosition;
this.tabIndex = tabIndex;
}
@Prefix("overview")
public static class Tokenizer implements PlaceTokenizer<ExamplePlace> {
/**
* parse token to get state
*
*/
@Override
public ExamplePlace getPlace(String token) {
String treePosition = "";
int tabIndex = 0;
String[] states = token.split(";");
for (String state : states) {
String[] mapping = state.split("=");
if (mapping.length == 2) {
if ("t".equals(mapping[0])) {
treePosition = mapping[1];
}
if ("m".equals(mapping[0])) {
try {
tabIndex = Integer.valueOf(mapping[1]);
} catch (Throwable e) {
}
}
}
}
return new ExamplePlace(treePosition, tabIndex);
}
/**
* store state in token
*
*/
@Override
public String getToken(ExamplePlace place) {
StringBuffer sb = new StringBuffer();
if (place.getTreePosition()!=null) {
sb.append("t").append("=").append(place.getTreePosition());
sb.append(";");
}
sb.append("m=").append(place.getTabIndex());
return sb.toString();
}
}
public String getTreePosition() {
return treePosition;
}
public void setTreePosition(String treePosition) {
this.treePosition = treePosition;
}
public int getTabIndex() {
return tabIndex;
}
public void setTabIndex(int tabIndex) {
this.tabIndex = tabIndex;
}
}
このようにすると、次のようなURLが表示されます。
のindex.html#概要:T = /サブツリー/サブツリー/葉;前方がトークンには、わからないスラッシュでmは= 2
あなたはトラブルに実行される場合があります。必要に応じてそれらを他の文字に変更します。
アクティビティは受信場所を受け取り、ビューに状態を注入します。
ハム、私はこれが唯一の解決策であることを恐れる!私はGWT-「活動/場所」を見つける前に、偶然に(ただし複数の「場所」で)比較可能なアプローチを実装します。 何でも。今私はドキュメントで何かを見逃していないことを知っています!ありがとう。 –
重要なことは、一度に複数の場所に表示することはできず、個別のアクティビティによって管理される複数の表示領域のみです。その場所はどの活動が活性化されるかを決定する。 – koma