Struts 2 – 意外exception捕获设置’xx’

我试图从HTML表单提交未知数字输入到Action类,并使用Action类中的请求方法(使用ServletActionContext)获取Input参数信息。

但它的投掷

Unexpected Exception caught setting 'xx' on 'class classname Error setting expression 'xx' with value ['yy', ]

由于表单中的输入元素是使用JS动态添加的,因此我无法在Action类中使用getter和setter。

如何处理Action类没有任何exception?

JSP:

    Team Activity Log  function addRow(tableid) { var table = document.getElementById(tableid); var rowCount = table.rows.length; var row = table.insertRow(rowCount); var cell1 = row.insertCell(0); var element1 = document.createElement("select"); element1=document.getElementById("sele").cloneNode(true); element1.type="select"; cell1.appendChild(element1); var cell2=row.insertCell(1); var element2 = document.createElement("input"); element2.type="text"; element2.setAttribute("placeholder","Eg:1234"); cell2.appendChild(element2); var cell3=row.insertCell(2); var element3 = document.createElement("input"); element3.type="text"; element3.setAttribute("placeholder","Brief your work"); cell3.appendChild(element3); var cell4=row.insertCell(3); var element4 = document.createElement("input"); element4.type="text"; element4.setAttribute("placeholder","MM min"); cell4.appendChild(element4); var cell5=row.insertCell(4); var element5 = document.createElement("img"); element5.src="http://sofzh.miximages.com/java/close.png"; element5.setAttribute("id","delete"); element5.setAttribute("onclick","changeImage(this)"); cell5.appendChild(element5); } function changeImage(temp) { (temp.parentElement).parentElement.remove(); } function convert(tableid,temp2) { var table=document.getElementById(tableid); console.log(table.rows.length); var hidelement=document.getElementById(temp2); hidelement.setAttribute("value",table.rows.length-1); for(var i=1;i<table.rows.length;i++) { var tt="tt"+i; var rf="rf"+i; var des="des"+i; var eff="eff"+i; console.log("executing function"); var elemen=table.rows[i].cells[0].querySelector("*"); elemen.setAttribute("name",tt); elemen=table.rows[i].cells[1].querySelector("*"); elemen.setAttribute("name",rf); elemen=table.rows[i].cells[2].querySelector("*"); elemen.setAttribute("name",des); elemen=table.rows[i].cells[3].querySelector("*"); elemen.setAttribute("name",eff); } }       <form action=>  
Task Type Reference ID Description Efforts
Select your option SR CR ALM INCIDENT OTHER
Select your option SR CR ALM INCIDENT OTHER
Select your option SR CR ALM INCIDENT OTHER
Select your option SR CR ALM INCIDENT OTHER
Select your option SR CR ALM INCIDENT OTHER

struts.xml中的Action标记

  Time.jsp  

我的动作类:

 import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; public class Timeprocess { public String execute() { HttpServletRequest request = ServletActionContext.getRequest(); String tt="tt"; String rf="rf"; String des="des"; String eff="eff"; for(int i=0;i<Integer.parseInt(request.getParameter("taskcount"));i++) { System.out.println("Task Type :"+ request.getParameter(tt+String.valueOf(i))); System.out.println("Task Type :"+ request.getParameter(rf+String.valueOf(i))); System.out.println("Task Type :"+ request.getParameter(des+String.valueOf(i))); System.out.println("Task Type :"+ request.getParameter(eff+String.valueOf(i))); } return "success"; } } 

您可以通过在动作配置中覆盖拦截器来控制Struts2的参数填充过程。

   .*  Time.jsp  

在那里你修改了params拦截器的excludeParams属性,以排除通过OGNL处理的所有参数。

您不应该以这种方式获得任何exception,但请确保已配置struts.devMode=false

  

它应该从输出中删除不必要的警告。 如果日志中仍然出现任何警告或exception,则应配置日志记录框架以禁止输出中的这些警告或错误。