2

こんにちは、単一の jsp で複数のフォームを使用し、単一のボタンを使用することは可能ですか?

これが私のjspページで、2つのフォームがあります。2番目のフォームのみを保存します。

<html>
<head>
<title>Update General Info</title>
<script type="text/javascript">
function validateForm()
{
var name=document.getElementById("name").value;
 var surname=document.getElementById("surname").value;
var email=document.getElementById("email").value;
var amka=document.getElementById("amka").value;
if (name.length == 0)   
  {
  alert("Name must be filled out");
  return false;
 } else if(surname.length == 0){
      alert("Surname must be filled out");
      return false;
  }else if(email.length == 0){
      alert("Email must be filled out");
      return false;
  }else if(amka.length == 0){
      alert("Amka must be filled out");
      return false;
  }
}
</script>
</head>
<body>
<h1>Update General Info</h1>

<c:if test="${!empty user}">
<c:url var="saveArticleUrl" value="/articles/updateGeneralSave.html" />
<form:form onsubmit="return validateForm()" modelAttribute="user" method="POST" >
<table bgcolor="DBEADC" border=1>
<tr>
<th>Id</th>
<th>Team</th>
<th>Name</th>
<th>Surname</th>
<th>Username</th>
<th>Password</th>
<th>Email</th>
<th>AMKA</th>
<th>Status</th>
<th>Department</th>
</tr>


<tr>
<td><form:input readonly="true" path="id" value="${user.id}"></form:input></td>
<td><form:input readonly="true" path="team" value="${user.team}"></form:input></td>
<td><form:input id="name" path="name" value="${user.name}"></form:input></td>
<td><form:input id="surname" path="surname" value="${user.surname}"></form:input></td>
<td><form:input readonly="true" path="username" value="${user.username}"></form:input></td>
<td><form:input type="password" readonly="true" path="password" value="${user.password}"></form:input></td>
<td><form:input id="email" path="email" value="${user.email}"></form:input></td>
<td><form:input id="amka" path="amka" value="${user.amka}"></form:input></td>
<td><form:input id="status" path="status" value="${user.status}"></form:input></td>

<td><form:select  path="department">
<c:forEach items="${departments}" var="dep">
<c:if test="${dep.dep_name==user.department }">
<OPTION selected VALUE="${dep.dep_name}"><c:out value="${dep.dep_name}"/></OPTION>
</c:if>
<c:if test="${dep.dep_name!=user.department }">
<OPTION VALUE="${dep.dep_name}"><c:out value="${dep.dep_name}"/></OPTION>
</c:if>

</c:forEach>
</form:select></td>
</tr>
</table>




</form:form>
</c:if>
<c:if test="${!empty phones}">
<c:url var="saveArticleUrl" value="/articles/updatePhoneSave.html" />
<form:form onsubmit="return validateForm()" modelAttribute="updatePh" method="POST" action="${saveArticleUrl}">
<table bgcolor="DBEADC" border=1>
<tr>
<th>Id</th>
<th>Phone</th>
<th>Mobile</th>
<th>Fax</th>
</tr>



<tr>
<td><form:input readonly="true" path="id" value="${phones.id}"></form:input></td>
<td><form:input id="phone" path="phone" value="${phones.phone}"></form:input></td>
<td><form:input id="mobile" path="mobile" value="${phones.mobile}"></form:input></td>
<td><form:input path="fax" value="${phones.fax}"></form:input></td>
</tr>


</table>



<input type="submit" value="Update" />
</form:form>

</c:if>
</body>
</html>

そしてコントローラー

RequestMapping(value = "updateGeneral" , method = RequestMethod.GET)
        public ModelAndView updateGeneral(@ModelAttribute("user") Users user ,@ModelAttribute("updatePh") Phone updatePh, @RequestParam("id")Integer id){
         Map<String, Object> model = new HashMap<String, Object>();
            model.put("user",  articleService.getUser(id));
            model.put("departments", articleService.listDepartments());
            //twra mpike
            model.put("phones",  articleService.getPhones(id));
        return new ModelAndView("updategeneral",model);
     }
     //evala akoma ena modelattri
     @RequestMapping(value = "updateGeneralSave" , method = RequestMethod.POST)
        public ModelAndView updateGeneralSave(@ModelAttribute("user") Users user){


         articleService.updateUser(user);

        return new ModelAndView("redirect:/articles/listusers.html");
     }


 @RequestMapping(value = "updatePhoneSave" , method = RequestMethod.POST)
        public ModelAndView updatePhonesave(@ModelAttribute("updatePh") Phone updatePh){


         articleService.updatePhone(updatePh);  
        return new ModelAndView("redirect:/articles/listusers.html");
     }
4

5 に答える 5

4

JSP には複数のフォームを含めることができますが、両方を同時に送信することはできません。

両方のフォームと両方のアクションを組み合わせて、アクション/コントローラー内のすべての情報を取得し、電話とユーザーの情報を保存する必要があります。もう 1 つのオプションは、Ajax を使用してフォームの 1 つを送信し、もう 1 つを通常どおり送信することです。

ちなみに、あなたの問題はSpringとは何の関係もありません。

于 2012-06-22T11:51:05.803 に答える
0

はい、もちろん、ボタンを作成して両方のフォームを送信できます。しかし、あなたはajaxでそれをしました。

于 2012-06-21T17:08:37.587 に答える
0

あなたの唯一のオプションはajaxを行うことです。最初の送信後にコントローラーメソッドがページをレンダリングする場合、HTTPによる2番目の送信は決して有効にならないことに注意する必要があります。

    function submitForm(form, index){
       $.ajax({
        dataType: "json",
        method: "POST",
        url: "your controller url",
        data:$('#form').serialize(),
        success: function (data) {
           if(index > 0){
              submitForm(form+=1, index--)
           }
        }
    });

}

于 2014-05-30T09:21:30.137 に答える
0

document.forms[i] を使用して Web ページ上のフォームをループし、各フォームで個別に送信を呼び出す必要があります。

于 2013-05-02T13:16:07.640 に答える
-1

あなたは次のようなトリックを行うことができますsumbitボタンの代わりに通常のボタンだけがあります

<input type="button" value="Update" onClick="submit2forms();"/>

このボタンをクリックすると、javascriptメソッドの下を次のように呼び出します。

        <script language="javascript">
            function submit2forms() {
                document.getElementById("form1").submit();
                document.getElementById("form2").submit();
            }
        </script>
于 2012-06-22T11:38:39.237 に答える