2015-01-05 21 views
1

我有一個表格內包含下拉列表和隱藏的inputParametersInterceptor錯誤:意外的異常被捕獲,錯誤設置表達式

JSP

<form action="modifyfaculty" method="post"> 
    <table> 
     <thead class="center"> 
      <tr> 
       <!-- column names here --> 
      </tr> 
     </thead> 

     <tbody> 
      <c:forEach var="professor" items="${facultyList}"> 
       <tr> 
        <!-- more <td> --> 

        <td align="center"> 
         <c:choose> 
          <c:when test="${professor.profEmplStatus.equals('FULL')}"> 
           <select name="profEmplStatus" required> 
            <option value="FULL" selected>FULL</option> 
            <option value="PART">PART</option> 
            <option value="RET">RET</option> 
            <option value="TRMTD">TRMTD</option> 
           </select> 
          </c:when> 

          <!-- more <c:when> blocks --> 
         </c:choose> 
        </td> 

        <td align="center"> 
         <c:choose> 
          <c:when test="${professor.profDept.equals('BSCS-SE')}"> 
           <select name="profDept" required> 
            <option value="BA-MMA">BA-MMA</option> 
            <option value="BFDT">BFDT</option> 
            <option value="BS-AN">BS-AN</option> 
            <option value="BS-GPD">BS-GPD</option> 
            <option value="BSBA-FM">BSBA-FM</option> 
            <option value="BSBA-MKT">BSBA-MKT</option> 
            <option value="BSCS-SE" selected>BSCS-SE</option> 
            <option value="BSIT-WD">BSIT-WD</option> 
            <option value="GENED">GENED</option> 
           </select> 
          </c:when> 

          <!-- more <c:when> blocks --> 
         </c:choose> 
        </td> 

        <td class="center"> 
         <input type="hidden" name="profId" value="${professor.profId}" /> 
         <input type="submit" value="Save" /> 
        </td> 
       </tr> 
      </c:forEach> 
     </tbody> 
    </table> 
</form> 

ModifyFacultyAction

public class ModifyFacultyAction extends ActionSupport { 
    private static final long serialVersionUID = 1L; 

    private Integer profId; 
    private String profEmplStatus; 
    private String profDept; 

    @Override 
    public String execute() { 
     FacultyManager fm = new FacultyManager(); 
     fm.modifyFaculty("professor_employment_status", profEmplStatus, profId); 
     fm.modifyFaculty("professor_department", profDept, profId); 

     return SUCCESS; 
    } 

    public Integer getProfId() { 
     return profId; 
    } 

    public void setProfId(Integer profId) { 
     this.profId = profId; 
    } 

    public String getProfEmplStatus() { 
     return profEmplStatus; 
    } 

    public void setProfEmplStatus(String profEmplStatus) { 
     this.profEmplStatus = profEmplStatus; 
    } 

    public String getProfDept() { 
     return profDept; 
    } 

    public void setProfDept(String profDept) { 
     this.profDept = profDept; 
    } 
} 

struts.xml

<action name="modifyfaculty" class="com.mypackage.action.ModifyFacultyAction"> 
    <interceptor-ref name="notauth" /> 
    <interceptor-ref name="defaultStack" /> 

    <result type="redirectAction"> 
     <param name="actionName">viewfaculty</param> 
    </result> 

    <result name="input" type="redirectAction"> 
     <param name="actionName">viewfaculty</param> 
    </result> 

    <result name="index" type="redirect">/index.jsp</result> 
</action> 

輸出: enter image description here

然而,在從下拉菜單中選擇一個新值,然後單擊Save,我收到一個錯誤。以下是devMode日誌:

Jan 05, 2015 11:34:43 PM com.opensymphony.xwork2.interceptor.ParametersInterceptor error 
SEVERE: Developer Notification (set struts.devMode to false to disable this message): 
Unexpected Exception caught setting 'profId' on 'class com.mypackage.action.ModifyFacultyAction: Error setting expression 'profId' with value ['100005', '100006', '100007', '100008', '100009', '100010', '100011', ] 
Jan 05, 2015 11:34:43 PM com.opensymphony.xwork2.util.LocalizedTextUtil warn 
WARNING: Missing key [invalid.fieldvalue.profId] in bundles [[org/apache/struts2/struts-messages, com/opensymphony/xwork2/xwork-messages]]! 

如何解決此問題?

+0

將'input'結果和一些標籤('actionerror' /'fielderror')添加到jsp中以查看錯誤。 –

+0

我添加了'「,但它必須重定向到另一個動作('type =」redirectAction「')來呈現所需的JSP,所以我看不到字段錯誤消息。 – silver

+1

所以不要重定向。打開開發模式。 –

回答

0

您無需提交全部表中的ID。因爲您不想將profId轉換爲列表或數組。爲每個記錄使用一個單獨的表單。

<table> 
    <thead class="center"> 
     <tr> 
      <!-- column names here --> 
     </tr> 
    </thead> 

    <tbody> 
     <c:forEach var="professor" items="${facultyList}"> 
      <tr><td> 
      <form action="modifyfaculty" method="post"> 
      <table> 
      <tr> 
       <!-- more <td> --> 

       <td align="center"> 
        <c:choose> 
         <c:when test="${professor.profEmplStatus.equals('FULL')}"> 
          <select name="profEmplStatus" required> 
           <option value="FULL" selected>FULL</option> 
           <option value="PART">PART</option> 
           <option value="RET">RET</option> 
           <option value="TRMTD">TRMTD</option> 
          </select> 
         </c:when> 

         <!-- more <c:when> blocks --> 
        </c:choose> 
       </td> 

       <td align="center"> 
        <c:choose> 
         <c:when test="${professor.profDept.equals('BSCS-SE')}"> 
          <select name="profDept" required> 
           <option value="BA-MMA">BA-MMA</option> 
           <option value="BFDT">BFDT</option> 
           <option value="BS-AN">BS-AN</option> 
           <option value="BS-GPD">BS-GPD</option> 
           <option value="BSBA-FM">BSBA-FM</option> 
           <option value="BSBA-MKT">BSBA-MKT</option> 
           <option value="BSCS-SE" selected>BSCS-SE</option> 
           <option value="BSIT-WD">BSIT-WD</option> 
           <option value="GENED">GENED</option> 
          </select> 
         </c:when> 

         <!-- more <c:when> blocks --> 
        </c:choose> 
       </td> 

       <td class="center"> 
        <input type="hidden" name="profId" value="${professor.profId}" /> 
        <input type="submit" value="Save" /> 
       </td> 
      </tr> 
      </table> 
      </form> 
     </td></tr> 
     </c:forEach> 
    </tbody> 
</table> 
+0

嗨,從[這個線程](http://stackoverflow.com/questions/5967564/form-inside-a-table),它說你不能有一個'

'''內? – silver

+0

如果您可以在Quentin的解決方案中包含一個示例,我很樂意接受這裏的答案,並將該主題鏈接到該帖子(因爲它似乎是一個受歡迎的問題)。 =) – silver

+0

在單元格中使用表單,然後需要一個內部表格來存儲外部表格的列。查看更新的代碼。 –

相關問題