2012-02-13 58 views
1

這可能是一個重複的問題,我很抱歉。我有一個jsp頁面,其中有一些按鈕。每個按鈕都有自己的servlet來調用。我想知道是否有任何方法可以在不使用表單的情況下調用這些servlet,因爲用戶可以選擇給定的3個功能之一。我還需要從jsp頁面傳遞一個值給我所調用的servlet。如何從jsp中調用servlet而不使用表格

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Configurations</title> 
<script type="text/javascript"> 
    function runConfiguration(){ 
     var config=${dataValues.get(0)}; 
     //call servlet 
    } 
    function editConfiguration(){ 
     var config=${dataValues.get(0)}; 
     //call servlet 
    } 
    function deleteConfiguration(){ 
     var config=${dataValues.get(0)}; 
     //call servlet 
    } 
</script> 
</head> 
<body> 
<% 
String[] label={"Master Port","Baud Rate","Char Size","Stop Bits","Parity","RTU Port","Baud Rate","Char Size","Stop Bits", "Parity"}; 
int i=0; 
%> 
<br> 
<br> 
<br> 
<table align="center" border="1"> 
    <td><div align="center" style="background-color: goldenrod;"><b> ${dataValues.get(0)}</b></div> 
     <table width="210" align="left" border="1"> 
      <td bgcolor="goldenrod"><b> Header1 </b></td> 
      <c:forEach var="data" begin="1" end="5" items="${dataValues}" varStatus="status"> 
      <tr> 
       <td><%=label[i++]%>: ${data}</td> 
      </tr> 
      </c:forEach> 
     </table>  
     <table width="210" align="left" border="1"> 
      <td bgcolor="goldenrod"><b> Header2 </b></td> 
      <c:forEach var="data" begin="6" end="10" items="${dataValues}" varStatus="status"> 
      <tr> 
       <td><%=label[i++]%>: ${data}</td> 
      </tr> 
     </c:forEach> 
     </table> 
    </td> 
</table> 
     <c:choose> 
     <c:when test="${dataValues.get(11)==1}"> 
       <p align="center"><b><i>This configuration is already running</i></b></p> 
       <p align="center"> 
      <input type="button" value="stop" onclick="StopConfiguration"/> 
       </p> 
     </c:when> 
     <c:otherwise> 
       <p align="center"><b><i>This configuration is currently NOT running</i></b></p> 
       <p align="center">      
        <button type="button" onclick="runConfiguration()">Run</button> 
        <button type="button" onclick="editConfiguration()">Edit</button> 
        <button type="button" onclick="deleteConfiguration()">Delete</button> 
       </p> 
     </c:otherwise> 
    </c:choose> 
</body> 
</html> 
+0

+1有用和翔實 – 2013-01-16 05:11:09

回答

3

我看到2個選項在這裏:

  1. 相應的變化形式的URL來使用JavaScript,每個按鈕右邊sendiing POST請求之前;

  2. 對所有3種情況使用一個表單和相同的servlet。在servlet中,您應該確定按下了哪個按鈕(它們的值作爲請求參數傳遞),然後相應地前進。

+0

看到這個以獲取更多信息:http://www.hiteshagrawal.com/ajax/http-form-post-request-using-ajax-and-servlet – MJM 2012-02-13 06:59:08

+0

+1表示第二個選項。它更加結構化 – Jayy 2012-02-13 06:59:35

0

請在你的servlet你的JSP &檢查它指定的操作字符串。

根據該字符串操作,您可以在您的servlet代碼中設置條件,以確定您希望執行特定操作的操作。 請看下面這是我在我的代碼中完成的。

FOR EXAMPLE

<A href="<%=request.getContextPath()%>/JobAction?action=runConfig">RUN</a> 

<a href="<%=request.getContextPath()%>/JobAction?action=editConfig">EDIT</a> 

,而不是調用servlet的很多,你可以調用一個servlet的。 在你的servlet中使用這樣的代碼。

String action = request.getParameter("action"); 
if (action.equalsIgnoreCase("runConfig")) { 
    // Specify what you want to do 
} else if (action.equalsIgnoreCase("editConfig")) { 
    // Specify what you want to do 
} else if (action.equalsIgnoreCase("deleteConfig")) { 
    // Specify what you want to do 
} 
0

您也可以使用JavaScript和當時當用戶打一個按鈕來調用腳本,動態更改URL,並提交該表格。
下面是一個例子.....

<form action = "something".....> 
    your stuff here.... 
    <button type="button" onclick="runConfiguration(actionName)">Run</button> 
    <button type="button" onclick="editConfiguration(actionName)">Edit</button> 
    <button type = "button" onclick = "deleteConfiguration(actionName)">Delete</button> 

,並在您的腳本

<script type="text/javascript"> 
     function runConfiguration(actionName){ 
      var config=${dataValues.get(0)}; 
      goToPage(actionName); 
      //call servlet 
     } 
     function editConfiguration(actionName){ 
      var config=${dataValues.get(0)}; 
      goToPage(actionName) 
      //call servlet 
     } 
     function deleteConfiguration(actionName){ 
      var config=${dataValues.get(0)}; 
      goToPage(actionName) 
      //call servlet 
     } 

function gotopage(actionname) 
{ 
     document.formName=actionname; 
     document.formName.submit(); 
} 
    </script>