いいね!数

0

閲覧数
275

お世話になっております。

 

現在、カスタムコントロール上に、フィールドを配置しています。

フィールドはいくつかあるのですが、

このIDがカスタムコントロールを変更するたびに、変わってしまって、困っております。

<xp:inputText styleClass="form-control"
        id="list_tantoKanji" value="#{requestScope.resTantoKanji}" defaultValue="#{javascript: getKanjiName(@UserName());}">
    </xp:inputText>

上記の様にコーディングしていますが、このid=list_tantoKanjiが、xpagesが生成されると、id="view:_id1:_id50:_id189:list_tantoKanji"

となるのですが、id189の部分が、どんどんカウントアップされるのです。

 

何かご存知の方がいらしたら、ご教示いただけますでしょうか。

よろしくお願いいたします。

サーバー情報: | クライアント情報: | 
カテゴリ:トラブルシューティング | タグ:
  | 質問日時:2017/01/30 10:08:35

回答・コメント

いいね!数

0

yoshitaka_yamaさん

以前私も同じ点で悩みました。

どうもカスタムコントロールタムコントロール内では、view:_id1:_idx の形式になる仕様のようです。

回答日時:2017/01/30 10:18:29

いいね!数

0

ss_chさん

ご回答ありがとうございます。

view:_id1:....

この形式になるのは、わかるのですが、最後の番号が、カスタムコントロールを編集するたびに、カウントアップされてしまうので、

該当カスタムコントロール上のフィールドを参照しているJavascriptを、いちいち変更しないといけないのです。

 

何かご存知でしょうか。

よろしくお願いいたします。

回答日時:2017/02/03 15:26:41

いいね!数

2

CSJSの話であれば、 var listTantoKanjiItem = dojo.byId('#{id:list_tantoKanji}');
のように記述すれば、変換されたIDを展開してHTML要素を取得できますが、そういうことではないですか?

回答日時:2017/02/06 10:51:29

いいね!数

0

ykawa様の補足になりますが、
SSJSの場合は『getComponent("list_tantoKanji")』で、
CSJSの場合は『document.getElementById("#{id:list_tantoKanji}").value;』で
取得できると思いますが、如何でしょうか?

回答日時:2017/02/09 11:58:47

いいね!数

0

だいぶ時間が経過してしまい、すみません。

カスタムコントロール上に、

    <script language="javascript" type="text/javascript">

で書き始めて、クライアントのJavascriptを書いていますが、上記

document.getElementById("#{id:list_tantoKanji}").value;

で指定しても、取得出来ませんでした。

何か、書き方に違いがあるのでしょうか。

引き継き、よろしくお願いします。

回答日時:2017/07/15 14:09:13

いいね!数

0

取得できなかった原因が分かりましたので、一応書いておきます。

 <xp:scriptBlock id="scriptBlock1" >
    <xp:this.value>
      <![CDATA[
実際のスクリプト
      ]]>
    </xp:this.action>
 </xp:scriptBlock>

この書き方をしていなかったためでした。

解決しました。

皆様、ありがとうございました。

回答日時:2017/07/19 21:27:55