2

Struts2は初めてですが、jQueryセレクターがjspsで定義したStruts2タグにアクセスできないという問題が常に発生しています。

多くのカスタムコードやプラグインなしでは統合できないと思いますが、それについて書くことで決定的なものを見つけることができませんでした。私がstrut2-jQueryプラグインのページに行ったとき、彼らはよくある質問でプラグインを使用する方が良いと言っていますが、必須のものではありません。

ここで何かが足りませんか?要素にstruts2タグがあり、jQueryを使用してそれを選択しようとすると、機能しないように見えます。私は次のような基本的な要素を話している

$('form').find(':input').change(function() { ...  //or

$('#testbutton').attr('disabled', true);  //or

 $('#formName').change(function() { 
          alert("Found form!"); 
     });

したがって、ビューソースを見ると、タグから生成される通常のhtmlコードが表示されます。これが、struts2タグからのものであるのに対し、同じjQueryセレクターコードを持つ通常のhtmlタグからのものである場合、セレクターを使用してこれらの特定の要素に到達することはできません。

もう1つの項目は、jspページでjQueryを参照するために次のようなものを使用しています。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
4

1 に答える 1

2

HTMLがどのように生成されるかは、クライアント(ブラウザー)とは関係がなく、クライアントは、生成されたDOM以外のものを認識しません。

IDがある場合、またはそれが入力である場合、jQueryはそれを検出します。私はS2アプリでプレーンなjQuery(およびプロトタイプ)を何年も問題なく使用してきました。

他の何かが間違っています。


JSP、レンダリングされたHTML、およびコンソール出力を表示するように編集されました。

JSP:

<s:form action="simpleForm">
  <s:textfield name="fname"/>
  <s:submit value="Go!"/>
</s:form>

レンダリングされたHTML(デフォルトの"xhtml"テーマを想定):

<form id="simpleForm" name="simpleForm" action="/simpleForm.action" method="post">
  <table class="wwFormTable">
    <tr>
      <td class="tdLabel"></td>
      <td><input type="text" name="fname" value="" id="simpleForm_fname"/></td>
    </tr>

    <tr>
      <td colspan="2"><div align="right"><input type="submit" id="simpleForm_0" value="Go!"/>
      </div></td>
    </tr>
  </table></form>

一部のコンソール出力:

> $("form")
[<form id=​"simpleForm" name=​"simpleForm" action=​"/​simpleForm.action" method=​"post">​…​&lt;/form>​]
> $("form").find(":input")
[<input type=​"text" name=​"fname" value=​"d" id=​"simpleForm_fname">​, 
 <input type=​"submit" id=​"simpleForm_0" value=​"Go!">​]
> $("form").find("input") // Don't need the ":"
[<input type=​"text" name=​"fname" value=​"d" id=​"simpleForm_fname">​,
 <input type=​"submit" id=​"simpleForm_0" value=​"Go!">​]
于 2012-05-07T21:22:54.967 に答える