1

我创建了一个jsp页面。因为当我选择 1 个复选框或两个复选框或无时,相应的文本框和列表框必须显示在同一页面中。

为此,当我单击复选框时,我尝试调用 javascipt 函数。javascript 函数包含显示文本框的代码。但它没有用。

由于我在 struts 中做这个项目,我不知道如何获取复选框值。并且调用 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 中的页面并选择View Source。如果 Java/JSP 正确地完成了它的工作,那么您应该不会在其中看到任何一行。

如果要使用 JavaScript 调用 Java/JSP 代码,则必须向 Web 服务器调用另一个 HTTP 请求,以便它可以根据特定请求执行 Java/JSP 代码。您可以通过提交表单或触发异步(ajaxical)请求来做到这一点。

鉴于目前所展示的技能以及您正在使用 Struts 的事实,我认为 ajax 会有点过于复杂。我建议只需单击复选框即可提交表单

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

然后让 JSP 有条件地显示输入字段(只是一个 JSTL 示例,因为我不做 Struts)

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

更新:顺便说一句,您在代码中遇到了另一个主要问题。您不能==在 Java 代码中比较字符串值(您只能在 EL 中这样做)。在 Java 代码中,您需要使用equals()方法。否则,它们将按引用而不是按值进行比较。我建议也学习基本的Java。

于 2011-01-17T02:53:12.497 回答