针对以下几种情况的map:
用法:
用法:
用法
用法:
java类mailaction.java:
package action;
import org.springframework.mail.simplemailmessage;
import org.springframework.mail.javamail.javamailsenderimpl;
import com.opensymphony.xwork2.action;
import com.opensymphony.xwork2.actionsupport;
public class mailaction extends actionsupport{
}
spring配置文件applicationcontext.xml:
struts2的配置文件struts.xml:
页面send.jsp:
<%@ page language="java" import="java.util.*"
pageencoding="utf-8"%>
页面sendok.jsp:
<%@ page language="java" import="java.util.*"
pageencoding="utf-8"%>
运行send.jsp发送邮件,成功的话会跳转到sendok.jsp页面。
1、用两重循环的方法
2、用一重循环的方法
<s:iteratorvalue="collection1"status="status">
<s:propertyvalue="collection1[#status.index][0]"/>
<s:propertyvalue="collection1[#status.index][1]"/>
s:iterator>
**************************************************************************************************************** dao里面如下写: package com.sinoconcept.match.dao.impl; import java.util.list; import org.springframework.dao.dataaccessexception; import com.sinoconcept.match.dao.dirctdao; public class dirctdaoimpl extends basedaohibernateimpl implements dirctdao { public list loadall(string classname) { } *************************************************************************************************************** service里如下写: package com.sinoconcept.match.service.impl; import java.lang.reflect.invocationtargetexception; import org.apache.struts.util.labelvaluebean; import com.sinoconcept.match.dao.dirctdao; public class dirctserviceimpl implements dirctservice { public list getdirect(string dirname) { list result = this.getdir(dirname); public list getdirectlabelvaluebean(string dirname) { list result = this.getdirlablevaluebean(dirname); public list getdir(string dirname) { result = dirctdao.loadall(dirname); return result; @suppresswarnings("unchecked") public dirctdao getdirctdao() { public void setdirctdao(dirctdao dirctdao) { } *********************************************************************************************************************** action里面如下设置: string status = request.getparameter("status"); list sttuslist = dirctservice //drstatus 数据映设文件只要二个字段:private integer id;private string value; mandiaryform.setstatus(status); request.setattribute("statuslist", sttuslist); **************************************************************************************************************** 页面上如下获得:
|
在 web 应用中,使用 javascript 的机会非常多。虽然不少书上提及客户有可能从浏览器关闭 js 的执行,但是要想完全的不使用它,目前看来好像还不行。比如一些复杂的 ui 是必须通过 js 来实现的(如下拉式菜单等等)。那么 validation 框架支不支持客户端的 js 验证呢?
答案是:当然。具体做法是:
- 在页面 html:form 标签内部添加 onsubmit="return validateeditform(this);" (具体的语法: validate 在 validation.xml 文件中定义的 form 的名字);如:
-
在
html:form
内部块中添加:
如此 2 步即可。虽然, validation 框架非常简单易用,但是还是有需要注意的地方。
1. 使用 validation 框架后, form 必须从 validatorform 中派生,同时必须在你的 validate 方法中先调用基类的 validate 方法。对于使用 dyna 开头的方法来创建 formbean 的读者,你也必须改为以 dyna 开头含有 validator 的 form 。
2. 注意 dynavalidatorform ( validatorform )和 dynavalidatoractionform ( validatoractionform )的区别。刚开始时从帮助中没看明白这 2 者的区别,后来从网上一篇文章中得到了用法的区别。前者主要的视角是 formbean ,而后者的视角是 action 。
当 formbean 被不同的 action 使用时,对于不同的 action 而言,使用的 formbean 的属性集合有大有小。此时如果仍然以 formbean 为主体,会造成其他 action 的不正常使用。因此, struts 中提出了 dynavalidatoractionform ( validatoractionform )。此时在 validation.xml 中的 form 标签的 name 属性改为 action 的 path 属性,又由于 action 中有 attribute 和 name 属性, validation 框架就可根据这个 action 得到对应的 formbean 。例子: