0

.tmlファイルに次のようなものがあります。

<t:beaneditform t:id="adForm" object="editableAd"
                        reorder="actiontype,shops,movies,streams,widgets" ....

私の質問は、.javaファイルの列挙型(実際にはSELECT)であるactionTypeにアクセス(参照)する方法です。明らかにフォーム自体を送信する前に、ユーザーがこの選択(ドロップダウン)の値を変更したときにイベントを処理する必要があります。

このようなものが私のために働くなら...

@OnEvent(component = "adForm.actionType", value=EventConstants.VALUE_CHANGED)
    public void actionTypeValueChanged(String value) {
      log.info("value is: " + value);
    }
4

2 に答える 2

1

クライアント側のSelect html コンポーネントで変更された値で更新するには、t:zone属性を持つテンプレート ファイルにタペストリー select コンポーネントを用意します (つまり、この場合、任意のダミー ゾーンを指すことができます。これは正しく設定する必要があるだけです)。値が変更されたときにゾーンを更新する必要がある場合)

またt:value、page\component java ファイルの enum 変数に属性を設定します。通常、この変数にはタペストリーの@Property.

例:

<t:select t:id="myEnumVariable" t:zone="dummyZone" t:value="myEnumVariable"/>

myEnumVariableクラスの変数を参照するために使用され、ID として機能します (つまり、実際の文字列myEnumVariableが ID として使用されます)。これは必須ではありませんが、その方が読みやすく、保守しやすいです)

public class MyClass{
    @Property
    private MyEnum myEnumVariable;

    @OnEvent(component = "myEnumVariable", value=EventConstants.VALUE_CHANGED)
    public void actionTypeValueChanged(**MyEnum** newValue) {
        this.myEnumVariable = newValue; // <<<<<<
        log.info("value is: " + myEnumVariable );
    }
}
于 2013-02-07T18:54:01.037 に答える
0

タペストリーに ChenilleKit フレームワークを使用してもかまわない場合は、フレームワークのOnEvent mixinを使用してみてください。

私が共有するリンクで例を見つけることができますが、基本的には select タグに 2 つの属性を追加します。

<t:select t:id="myselect" ... t:mixins="ck/OnEvent" t:event="change" />

次に、Java クラスにイベント ハンドラーを追加します。

@OnEvent(component="myselect", value='change')
public void onChangeDoSomething(String value) {

ちなみに、ムハンマドの答えも同様に正しいと思います(追加のフレームワークを使用する必要はありません)。

于 2013-02-08T13:52:22.530 に答える