2016-05-23 5 views
0

POSTでエラーを処理してフォームに正しく表示するスプリングMVCフォームがあります(同じページのエラーを表示し、フォームからデータをクリアしません) 。また、トランザクションの成功時にフォームに成功メッセージを追加し、フォームの内容も消去したいと考えています。Spring MVCフォーム - 成功メッセージを追加してフォームをクリア

私は成功メッセージを処理する方法についての手がかりがありません。私はフォームにエラーとしてそれを渡そうとしましたが、これはエラーのために使用された色である赤色で表示されます。このメッセージの色を緑色に変更できません。ここで

  model.addAttribute("serverError", "Transaction inserted Successfully !"); 
    return "checkinout"; 

は私のコード -

の.css

.plErroMessage{margin-left:185px;color:white;background-color:red;width:165px;padding: 4px;} 

checkinout.jsp

<div class="devices"> 
    <form:form method="post" id="assetForm" modelAttribute="inOutTransaction" action="/DeviceManager/assets"> 
     <form:errors path="*" cssClass="plErroMessage" element="div" /> 
     <br> 
     <c:if test="${not empty serverError}"> 
      <div id="serverError" class="plErroMessage">${serverError}</div> 
     </c:if> 
     <form:hidden path="actionId"/> 
     <div> 
      <div class="plLabelSearch">User Id:</div> 
      <div class="plinput"><form:input path="userId" size="29"/></div> 
     </div> <!-- More Code follows --> 

コントローラである

@RequestMapping(value="/assets", method = RequestMethod.POST) 
public String checkInOut(@ModelAttribute("inOutTransaction") @Validated InOutTransaction inOutTransaction, BindingResult result, Model model, Locale locale) { 
    try { 
     if(result.hasErrors()){ 
      return "checkinout"; 
     } 
     InOutTransactionDO inOutTransactionDO = new InOutTransactionDO(); 
/*CODE*/ 
     if(employeeInfoDO == null){ 
      model.addAttribute("serverError", "User "+ inOutTransaction.getUserId()+" does not exist !"); 
      return "checkinout"; 
     } 
/*CODE*/ 
     if(deviceMasterDO == null){ 
      model.addAttribute("serverError", "Device Id "+ inOutTransaction.getAssetTagNumber()+" not found !"); 
      return "checkinout";   
     } 
     inOutTransactionService.saveTransaction(inOutTransactionDO); 
     model.addAttribute("serverError", "Transaction inserted Successfully !"); 
     return "checkinout"; 
      } catch (Exception e) { 
      model.addAttribute("serverError", e.toString()); 
      return "checkinout"; 
      } 
} 
+0

成功メッセージをエラーとして送信する場合は、どのようにCSSを変更できますか? –

答えて

0

もっと良い解決策があるかもしれませんが、私は過去にこれまでこれを思いつきました。

1)は、追加のHttpServletRequestパラメータ

@RequestMapping(value="/assets", method = RequestMethod.POST) 
public String checkInOut(@ModelAttribute("inOutTransaction") @Validated InOutTransaction inOutTransaction, 
BindingResult result, Model model, Locale locale, HttpServletRequest request) { 
try { 
    if(result.hasErrors()){ 
     return "checkinout"; 
    } 
    InOutTransactionDO inOutTransactionDO = new InOutTransactionDO(); 
/*CODE*/ 
    if(employeeInfoDO == null){ 
     model.addAttribute("serverError", "User "+ inOutTransaction.getUserId()+" does not exist !"); 
     return "checkinout"; 
    } 
/*CODE*/ 
    if(deviceMasterDO == null){ 
     model.addAttribute("serverError", "Device Id "+ inOutTransaction.getAssetTagNumber()+" not found !"); 
     return "checkinout";   
    } 
    inOutTransactionService.saveTransaction(inOutTransactionDO); 
    request.getSession().setAttribute("successMessage", "Transaction inserted Successfully !"); 
    return "checkinout"; 
     } catch (Exception e) { 
     model.addAttribute("serverError", e.toString()); 
     return "checkinout"; 
     } 
} 
)JSPに成功メッセージを追加し、JSP

<div class="devices"> 
<form:form method="post" id="assetForm" modelAttribute="inOutTransaction" action="/DeviceManager/assets"> 
    <form:errors path="*" cssClass="plErroMessage" element="div" /> 
    <c:if test="${not empty successMessage}"> 
     <div id="serverError" class="successMessage">${successMessage}</div> 
    </c:if>   
    <br> 
    <c:if test="${not empty serverError}"> 
     <div id="serverError" class="plErroMessage">${serverError}</div> 
    </c:if> 
    <form:hidden path="actionId"/> 
    <div> 
     <div class="plLabelSearch">User Id:</div> 
     <div class="plinput"><form:input path="userId" size="29"/></div> 
    </div> 

<c:remove var="successMessage" scope="session" /> 

3の最後にセッション変数をクリア)成功のための新しいCSSを作成中リクエストメッセージ

4)フォームをクリアするには、ページをリダイレクトするか、新しい空のオブジェクトをビューに送信します。

モデルではなくhttpSessionで成功メッセージを設定する理由は、デフォルトでは春がリダイレクト時にURLにモデル属性を追加するためです。リダイレクトしたくない場合は、空のオブジェクトを送信したい場合は、model.addAttributeにも追加してください。

+0

私はmodel.addAttributeに成功メッセージを追加し、必要なCSS形式のフォームに表示しました。 –

関連する問題