2个项目,都是用myecplise自动添加SSH框架所需的包.
项目A只选择添加了spring核心包,项目B是添加了所有spring的包(包括各种依赖的和非依赖的组件所需要的包,也就是非核心包,目前不需要用到的包).在struts中的action中 写下了: request.setAttribute("username","example");
然后在mapping.findForward跳转的页面中用${username} 或者 request.getAttribute("username")想得到保存的参数指"example".
----------------------------
将上面同样的代码,分别置于项目A、B中,得到不同结果:项目A:
得到 "example“项目B:
得到只能得到Null空值。
---------------------------
我怀疑是不是包添加不全(缺少加载EL表达式的包)或者有2个类型一样的包(名字一样,更新程度不一样),但加载时只能加载其中一个。希望大家给我点意见,因为我希望使用项目B中的包进行使用,但如果连EL表达式或者request.getAttribute()方法都用不了的话,就别想继续了。
项目A只选择添加了spring核心包,项目B是添加了所有spring的包(包括各种依赖的和非依赖的组件所需要的包,也就是非核心包,目前不需要用到的包).在struts中的action中 写下了: request.setAttribute("username","example");
然后在mapping.findForward跳转的页面中用${username} 或者 request.getAttribute("username")想得到保存的参数指"example".
----------------------------
将上面同样的代码,分别置于项目A、B中,得到不同结果:项目A:
得到 "example“项目B:
得到只能得到Null空值。
---------------------------
我怀疑是不是包添加不全(缺少加载EL表达式的包)或者有2个类型一样的包(名字一样,更新程度不一样),但加载时只能加载其中一个。希望大家给我点意见,因为我希望使用项目B中的包进行使用,但如果连EL表达式或者request.getAttribute()方法都用不了的话,就别想继续了。
可能原因
1, 是否被重定向.
2, 是否还有代码 将username 中的值重新覆盖为null
struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<data-sources />
<form-beans >
<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="username" type="java.lang.String" />
<form-property name="password" type="java.lang.String" />
</form-bean>
</form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/person"
scope="request"
type="com.solon.struts.action.LoginAction" validate="true" parameter="status">
<forward name="suc" path="/suc_do.jsp"></forward>
</action>
</action-mappings>
<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>
<message-resources parameter="com.solon.struts.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
HttpServletRequest request, HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;// TODO Auto-generated method stub
Person p = new Person();
p.setUsername(loginForm.getString("username"));
p.setPassword(loginForm.getString("password"));
try {
if(personDao.isLogin(p))
{
request.setAttribute("username", p.getUsername());
return mapping.findForward("suc");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mapping.getInputForward();
}
不同环境的默认不同,
要使用EL 表达式的话,必须:
首先确认导入EL表达式的jar包,
其次,是否启用EL表达式,也就是 isELIgnore=false;
最后,想请问下,页面是否能正常跳转先,还不清楚这个不好说...
我也觉得代码应该没有问题吧?有问题的话项目A就不可能得到结果
实在不行的话,希望有成功经验的人打开myecplise,按你开发的顺序添加SSH支持,然后把你添加支持时选项中需要的包写下来,我参考下,按你的步骤添加支持。
不用告诉我操作具体步骤!
只需要告诉我: 比如添加spring支持时,有很多核心包选择,你是全部勾选还是只勾选其中一部分,告诉我它们的名字。
Struts就不用说了,没有选项。只有spring和Hibernate。我打算添加成功后,把它们打包了,以后新建项目后直接覆盖后使用。省的包出错。分不多,谢谢各位。
昨晚还能运行的代码,又出问题了。
提交后action说找不到servlet,404错误。
配置都没改 ,估计真的是包的问题了。
想问下添加spring后,再添加hibernate支持时,快完成时最后弹出的窗口问:是否覆盖已经存在的jar包?是选择覆盖还是继续保持?