2016-01-16 4 views
1

Я пытаюсь отправить неизвестный номер ввода из класса HTML Form в Action и получить информацию о параметрах ввода с помощью метода запроса (используемый ServletActionContext) в классе Action.Struts 2 - Неожиданное исключение пойманное значение 'xx'

Но его метания

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

Поскольку входные элементы в виде добавляют динамически с помощью JS, я не в состоянии иметь методы получения и установки в классе действий.

Как обрабатывать класс Action без каких-либо исключений?

JSP:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Team Activity Log</title> 
<SCRIPT language="javascript"> 
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","E.g: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="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); 
} 
} 
</script> 
</head> 
<body> 
    <INPUT type="button" value="Add Row" onclick="addRow('matrix')" /> 
    <%@ taglib uri="/struts-tags" prefix="s" %> 
    <s:url id="myActionUrl" action="timesheetprocess" /> 
    <form action=<s:property value="%{myActionUrl}" />> 
    <input type="hidden" id="taskcount" value="5"> 
<table id="matrix"> 
<tr> 
    <th>Task Type</th> 
    <th>Reference ID</th> 
    <th>Description</th> 
    <th>Efforts</th> 
    <th></th> 
    </tr> 
    <tr> 
    <td> 
    <select id="sele"> 
    <option value="" disabled selected>Select your option</option> 
      <option value="SR">SR</option> 
      <option value="CR">CR</option> 
      <option value="ALM">ALM</option> 
      <option value="INCIDENT">INCIDENT</option> 
      <option value="OTHER">OTHER</option> 
    </select></TD> 
    <td> 
    <INPUT type="text" placeholder="E.g:1234"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="Brief your work"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="MM min" /> 
    </td> 
    <td> 
    <img id="delete" src="close.png" onclick="changeImage(this)"> 
    </td> 
    </tr><tr> 
    <td> 
    <select id="sele"> 
    <option value="" disabled selected>Select your option</option> 
      <option value="SR">SR</option> 
      <option value="CR">CR</option> 
      <option value="ALM">ALM</option> 
      <option value="INCIDENT">INCIDENT</option> 
      <option value="OTHER">OTHER</option> 
    </select></TD> 
    <td> 
    <INPUT type="text" placeholder="E.g:1234"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="Brief your work"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="MM min" /> 
    </td> 
    <td> 
    <img id="delete" src="close.png" onclick="changeImage(this)"> 
    </td> 
    </tr> 
    <tr> 
    <td> 
    <select id="sele"> 
    <option value="" disabled selected>Select your option</option> 
      <option value="SR">SR</option> 
      <option value="CR">CR</option> 
      <option value="ALM">ALM</option> 
      <option value="INCIDENT">INCIDENT</option> 
      <option value="OTHER">OTHER</option> 
    </select></TD> 
    <td> 
    <INPUT type="text" placeholder="E.g:1234"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="Brief your work"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="MM min" /> 
    </td> 
    <td> 
    <img id="delete" src="close.png" onclick="changeImage(this)"> 
    </td> 
    </tr> 
    <tr> 
    <td> 
    <select id="sele"> 
    <option value="" disabled selected>Select your option</option> 
      <option value="SR">SR</option> 
      <option value="CR">CR</option> 
      <option value="ALM">ALM</option> 
      <option value="INCIDENT">INCIDENT</option> 
      <option value="OTHER">OTHER</option> 
    </select></TD> 
    <td> 
    <INPUT type="text" placeholder="E.g:1234"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="Brief your work"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="MM min" /> 
    </td> 
    <td> 
    <img id="delete" src="close.png" onclick="changeImage(this)"> 
    </td> 
    </tr> 
    <tr> 
    <td> 
    <select id="sele"> 
    <option value="" disabled selected>Select your option</option> 
      <option value="SR">SR</option> 
      <option value="CR">CR</option> 
      <option value="ALM">ALM</option> 
      <option value="INCIDENT">INCIDENT</option> 
      <option value="OTHER">OTHER</option> 
    </select></TD> 
    <td> 
    <INPUT type="text" placeholder="E.g:1234"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="Brief your work"/> 
    </td> 
    <td> 
    <INPUT type="text" placeholder="MM min" /> 
    </td> 
    <td> 
    <img id="delete" src="close.png" onclick="changeImage(this)"> 
    </td> 
    </tr> 
    </table> 
    <INPUT type="button" value="Submit" onclick="convert('matrix','taskcount')" /> 
</form> 
    </body> 
    </html> 

Действие тег struts.xml

<action name="timesheetprocess" class="com.App.Controller.Timesheet.Timeprocess" 
    method="execute"> 
    <result name="success">Time.jsp</result> 
</action> 

Мой класс Действие:

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"; 

} 
} 
+0

http://stackoverflow.com/a/15267703/1654265 –

ответ

0

Вы можете контролировать процесс параметров населения по Struts2 с помощью переопределение перехватчиков в конфигурации действий.

<action name="timesheetprocess" class="com.App.Controller.Timesheet.Timeprocess" 
      method="execute"> 
    <interceptor-ref name="defaultStack"> 
     <param name="params.excludeParams">.*</param> 
    </interceptor-ref> 
    <result name="success">Time.jsp</result> 
</action> 

Там вы измените excludeParams свойство params перехватчика исключить все параметры из обработки с помощью OGNL.

Вы не должны получить никаких исключений в этом случае, но убедитесь, что вы настроили struts.devMode=false

<constant name="struts.devMode" value="false" /> 

Необходимо удалить ненужные предупреждения от выхода. Если вы все еще получаете предупреждения или исключения в журнале, тогда вы должны настроить фреймворк регистрации, чтобы подавить эти предупреждения или ошибки с выхода.

+0

Вы должны перенести ответ, который помогает многим людям. –

 Смежные вопросы

  • Нет связанных вопросов^_^