1

jspページを作成しました。その中で、1つのチェックボックスまたは両方のチェックボックスを選択するか、まったく選択しない場合、対応するテキストボックスとリストボックスを同じページに表示する必要があります。

そのために、チェックボックスをクリックしたときにjavascipt関数を呼び出そうとしました。javascript関数には、テキストボックスを表示するためのコードが含まれています。しかし、それはうまくいきませんでした。

私はこのプロジェクトを支柱で行っているので、チェックボックスの値を取得する方法がわかりません。そしてJavaScript関数の呼び出しは機能します。しかし、JavaScript関数でjspコードを入力しませんでした。

私のコードは

 <tr>
 <td>SEJ:</td>
 <td>SEJ 1:<html:checkbox property="sej1" value="on" onclick="checkbox_trial()"></html:checkbox></td>
 <td>SEJ 2:<html:checkbox property="sej2" value="on" onclick="checkbox_trial()"></html:checkbox></td>
 </tr>


  <script type="text/javascript">
  function checkbox_trial()
  {

        <% if(request.getParameter("sej1")=="on"){
    %> 
   <tr><td>SEJ1 Age<html:text property="sej1_age"></html:text></td></tr>
   <tr><td>SEJ1 DOI<html:text property="sej1_doi"></html:text></td></tr>
   <%} 

       else if(request.getParameter("sej2")=="on"){%>
   <tr><td>SEJ2 Age<html:text property="sej2_age"></html:text></td></tr>
       <tr><td>SEJ2 DOI<html:text property="sej2_doi"></html:text></td></tr>
   <%}

       else if((request.getParameter("sej1")=="on")&&(request.getParameter("sej2")=="on")){%>
   <tr><td>SEJ1 Age<html:text property="sej1_age"></html:text></td></tr>
   <tr><td>SEJ1 DOI<html:text property="sej1_doi"></html:text></td></tr>
   <tr><td>SEJ2 Age<html:text property="sej2_age"></html:text></td></tr>
   <tr><td>SEJ2 DOI<html:text property="sej2_doi"></html:text></td></tr>
   <%}

       else{%>
   NOTHING <% } %>
  }

4

1 に答える 1

3

これがその仕組みです。Java/JSPはwebserverで実行され、HTML / CSS / JSを生成し、webserverはそれをwebbrowserに送信し、webbrowserはHTML / CSS/JSを実行します。Java/JSPではありません。webbrowserでページを右クリックし、[ソースの表示]を選択します。Java / JSPが正しく機能していれば、そこにその行は表示されないはずです。

JavaScriptを使用してJava/JSPコードを呼び出す場合は、特定のリクエストに基づいてJava / JSPコードを実行できるように、Webサーバーに対して別のHTTPリクエストを呼び出す必要があります。これを行うには、フォームを送信するか、非同期(ajaxical)リクエストを実行します。

これまでに示したスキルとStrutsを使用しているという事実を考えると、ajaxは少し複雑すぎると思います。チェックボックスをクリックしてフォームを送信することをお勧めします

<input type="checkbox" name="show" value="true" onclick="submit()" />

次に、JSPに入力フィールドを条件付きで表示させます(Strutsを実行しないため、JSTLの例にすぎません)。

<c:if test="${param.show == 'true'}">
    <input type="text" />
    <select />
</c:if>

更新:ちなみに、コードには別の大きな問題があります。Javaコードでは文字列値を比較できません==(ELでのみ比較できます)。Javaコードでは、メソッドを使用する必要がありますequals()。それ以外の場合は、値ではなく参照によって比較されます。基本的なJavaも学ぶことをお勧めします。

于 2011-01-17T02:53:12.497 に答える