いいね!数

0

閲覧数
138

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

 

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

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

この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の部分が、どんどんカウントアップされるのです。

 

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

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

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

回答・コメント

いいね!数

0

yoshitaka_yamaさん

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

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

回答日時:Jan 30, 2017 10:18:29 AM

いいね!数

0

ss_chさん

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

view:_id1:....

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

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

 

何かご存知でしょうか。

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

回答日時:Feb 3, 2017 3:26:41 PM

いいね!数

2

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

回答日時:Feb 6, 2017 10:51:29 AM

いいね!数

0

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

回答日時:Feb 9, 2017 11:58:47 AM

いいね!数

0

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

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

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

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

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

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

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

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

回答日時:Jul 15, 2017 2:09:13 PM

いいね!数

0

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

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

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

解決しました。

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

回答日時:Jul 19, 2017 9:27:55 PM