SSH框架,struts2 数组表单提交,靠山无法取得数据
SSH框架,struts2 数组表单提交,后台无法取得数据。
前台使用形如这样的表单:
后台实体类
action类里面
在表单提交后出现这样的错误:
求助,我代码里面跟了下很难确定是哪里问题,好像是找不到attence这个字段?有没有人碰到过相同的错误的。
------解决思路----------------------
List<Attence> attence = new ArrayList<Attence>();看看。
------解决思路----------------------
这本来就是一个很简单的问题,我项目中用到了,就这样的:
这里的planList在Action中这样写的:
添加都是正常的,不知道你的为什么不行,
------解决思路----------------------
项目重新部署一下~先clean项目,不行的话,直接叉叉掉,从服务器重拉代码,全新部署。包括你的web服务器清缓存等,重启电脑各种操作全上了再说。看你这架势,感觉代码没问题,可能是哪个配置或者缓存类的问题
前台使用形如这样的表单:
<input type="text" name="attence[0].dept" />
<input type="text" name="attence[0].name"/>
<input type="text" name="attence[1].dept"/>
<input type="text" name="attence[1].name"/>
后台实体类
public class Attence {
private String dept;
private String name;
//相应的setter和getter。
}
action类里面
public Action{
List<Attence> attence = null;
//相应setter和getter。
//public String execute...等
}
在表单提交后出现这样的错误:
警告: Error setting value
java.lang.NullPointerException
at ognl.internal.ClassCacheImpl.get(ClassCacheImpl.java:49)
at ognl.OgnlRuntime.getFields(OgnlRuntime.java:1572)
at ognl.OgnlRuntime.getField(OgnlRuntime.java:1593)
at com.opensymphony.xwork2.ognl.OgnlReflectionProvider.getField(OgnlReflectionProvider.java:27)
at com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer.getAnnotation(DefaultObjectTypeDeterminer.java:191)
at com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer.shouldCreateIfNew(DefaultObjectTypeDeterminer.java:159)
at com.opensymphony.xwork2.ognl.accessor.XWorkListPropertyAccessor.getProperty(XWorkListPropertyAccessor.java:89)
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2317)
at ognl.ASTProperty.getValueBody(ASTProperty.java:114)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at ognl.SimpleNode.getValue(SimpleNode.java:258)
at ognl.ASTChain.setValueBody(ASTChain.java:222)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
at ognl.SimpleNode.setValue(SimpleNode.java:301)
at ognl.Ognl.setValue(Ognl.java:737)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:234)
at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:183)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:170)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:148)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:334)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:246)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.common.filter.LoginFilter.doFilter(LoginFilter.java:48)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.common.filter.EncodingFilter.doFilter(EncodingFilter.java:36)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
求助,我代码里面跟了下很难确定是哪里问题,好像是找不到attence这个字段?有没有人碰到过相同的错误的。
------解决思路----------------------
List<Attence> attence = new ArrayList<Attence>();看看。
------解决思路----------------------
这本来就是一个很简单的问题,我项目中用到了,就这样的:
<form id="planTableForm" action="${contextPath }/struts/bm/addPlan.do" method="post" onsubmit="return checkTableData();">
<div class="listFrom">
<table id="tableList">
<tbody id="addRowArea">
<tr>
<td align="center" width="5%">
<input value="1" size="3" readonly=readonly/>
</td>
<td align="center" width="10%">
<input type="text" name="planList[0].planName" id="planList[0].planName" value="" size="25" maxlength="25"/>
</td>
<td align="center" width="10%">
<s:select id="planList[0].planType" name="planList[0].planType" value="" headerKey="" headerValue="--请选择--"
list="#request.syscodes" listKey="code"
listValue="name" onchange="checkPlanType(this)"
cssStyle="height:20px;width:130px">
</s:select>
</td>
<td align="center" width="10%">
<input type="text" class="Wdate" id="planList[0].finishDate" name="planList[0].finishDate" value=""
onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" style="width:120px;" readonly=readonly/>
</td>
<td align="center" width="10%">
<input type="text" name="planList[0].jobPlace" id="planList[0].jobPlace" value="" size="20" maxlength="100"/>
</td>
<td align="center" width="10%">
<s:select id="planList[0].ownerId" name="planList[0].ownerId" value="" headerKey="" headerValue="--请选择--"
list="#request.workerTeams" listKey="userId" listValue="userName"
cssStyle="height:20px;width:130px;">
</s:select>
<!-- <input type="text" value="" size="" maxlength="18"/>-->
</td>
<td align="center" width="15%">
<input type="text" name="planList[0].unitTime" id="planList[0].unitTime" value="" size="" maxlength="100"/>
</td>
<td align="center" width="15%">
<input type="text" name="planList[0].remark" id="planList[0].remark" value="" size="" maxlength="100"/>
</td>
<td align="center" width="5%">
<a href="javascript:void(0);" onclick="deletePlan(this);return false;"><span>删除</span></a>
</td>
</tr>
</tbody>
</table>
<br>
</div>
<div class="buttons" align="center">
<input type="submit" class="button_blank" value="保存"/>
<input type="button" class="button_blank" value="取消" onclick="javascript:window.close();">
</div>
</form>
这里的planList在Action中这样写的:
public class PlanAction extends PomInfoAction{
private List<Plan> planList;
public List<Plan> getPlanList() {
return planList;
}
public void setPlanList(List<Plan> planList) {
this.planList = planList;
}
public String addPlan(){
try{
for(Plan p:planList){
p.setCreateUserId(this.getReh().getUserVO().getUserLongID());
p.setState(TypeConstant.PLAN_STATE_NOT_FINISH);
}
planMgr.batchAddPlan(planList);
}catch(Exception e){
logger.error(e.getMessage(),e);
}
return null;
}
}
添加都是正常的,不知道你的为什么不行,
------解决思路----------------------
项目重新部署一下~先clean项目,不行的话,直接叉叉掉,从服务器重拉代码,全新部署。包括你的web服务器清缓存等,重启电脑各种操作全上了再说。看你这架势,感觉代码没问题,可能是哪个配置或者缓存类的问题