generator标签的几个属性:
count:该属性是一个可选的属性,该属性指定生成集合中元素的总数。
separator:这是一个必填的属性,该属性指定用于解析字符串的分隔符。
val:这是一个必填的属性,该属性指定被解析的字符串。
converter:该属性是一个可选的属性,该属性指定一个转换器,该转换器负责将集合中的每个字符串转换成对象。
id:该属性是一个可选的属性,如果指定了该属性,则将生成的集合放在pageContext属性中。
问题:id将生成的集合放在了request中,而不是pageContext属性中
<table width="100" border="1">
<s:generator val="'音乐,语文,数学,地理'" separator="," count="2">
<s:iterator status="st">
<tr <s:if test='#st.odd'>style="background-color:#bbbbbb"</s:if> >
<td><s:property value="#st.count" /><s:property /></td>
</tr>
</s:iterator>
</s:generator>
<s:generator val = "'Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典'" separator = "," id="bookes" count="2"/>
<%
java.util.Iterator i = (java.util.Iterator)request.getAttribute("bookes") ; //应该是在pageContext中的,但是取出来这个Iterator i为null,反而我用request.getAttribute("bookes");却可以取到!
while( i.hasNext() ) {
String s = (String) i.next(); %>
<tr><td><%=s%></td></tr>
<%}
%>
</table>
s:combobox标签
<s:combobox label="请选择你喜欢的图书" theme="css_xhtml" labelposition="top" list="{'j2ee','spring','ajax'}"
size="5" maxlength="3" name="book"
></s:combobox>
以下代码也可以实现s:combobox标签的功能
<script type="text/javascript">
function autoPopulate_url_book(targetElement) {
targetElement.form.elements['book'].value=targetElement.options[targetElement.selectedIndex].value;
}
</script>
<input type="text" name="book" size="20" maxlength="20" value="" id="url_book"/><br />
<select onChange="autoPopulate_url_book(this);">
<option value="j2ee">j2ee2</option>
<option value="spring">spring2</option>
<option value="ajax">ajax2</option>
</select>
struts2找不到datetimepicker标签,不显示控件的解决方
解决办法:
1:要在工程中加个struts2-dojo-plugin.jar
2:到JSP页面加上
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
3:在head中加入<sx:head/>
例如:
test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<sx:head/>
</head>
<body>
<s:form theme="simple">
日期选择部件,指定toggleType属性,且指定value<br>
<sx:datetimepicker name="order.date" label="购买日期" toggleType="fade" value="%{'today'}" /><hr>
日期选择部件,指定format属性<br>
<sx:datetimepicker name="order.date" label="购买日期" displayFormat="yyyy年MM月dd日"/><hr>
日期选择部件,指定weekStartsOn属性<br>
<sx:datetimepicker name="order.date" label="购买日期" displayFormat="yyyy年MM月dd日" weekStartsOn="2"/><hr>
日期选择部件<br>
<sx:datetimepicker name="start" type="time" label="出发时间" value="%{'13:00'}"/><hr>
</s:form>
</body>
</head>
注意:value="%{'13:00'}" 的设置方式
用struts2.1.6的datetimepicker时,显示的时候月份从一月到八月都可以正常显示,而到九月,十月就乱码
这是 2.1.6 的一个 bug
解决办法:
1 ,这个方法可以解决乱码,但是 月份 都变成 1,2,3.... 了
在 <sd:head /> 中加入:extraLocales="UTF-8"
在 <sd:datetimepicker .../> 中加入:language="UTF-8"
问题:这个标签在不同的浏览器有不同的问题,不好解决啊
//用于截断s字符串前后空格的函数
function trim(s){
//使用正则表达式先截取签名空格,再截取后面空格
return s.replace(/^\s*/,"").replace(/\s*$/,"");
}
解决struts2中的中文问题
方法一:
1.在struts2-core-2.0.0-SNAPSHOT.jar包中路径为struts2-core-2.0.6\org\apache\struts2
有一个default.properties 文件,把struts.i18n.encoding=UTF-8改为
struts.i18n.encoding=GBK
2.在struts.xml文件内添加常量:
<constant name="struts.i18n.encoding" value="GBK"/>
3.jsp页面中<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
方法二:jsp页面中<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
s:doubleselect 的用法
出现以下异常的解决方法是在form中加上name属性:
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389)
root cause
expression_r_r parameters.formName is undefined on line 101, column 43 in template/simple/doubleselect.ftl. - Class: freemarker.core.TemplateObject
File: TemplateObject.java
Method: assertNonNull
Line: 124 - freemarker/core/TemplateObject.java:124:-1
org.apache.struts2.components.UIBean.end(UIBean.java:515)
例如:
%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<s:form action="x" name="myname">
<s:doubleselect label="请选择你喜欢的图书" name="author" list="{'李刚','Dvaid'}"
doubleList="top=='李刚'?{'j2ee','spring','java'}:{'JavaScript:The Definitive Guide'}"
doubleName="book" />
<s:set name="foobar"
value="#{'Java':{'Spring','Hibernate','Struts 2'},'.Net':{'Linq', ' ASP.NET 2.0'}, 'Database':{'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" />
<s:doubleselect list="#foobar.keySet()"
doubleName="technology"
doubleList="#foobar[top]"
label="Technology" size="3" doubleSize="3" />
</s:form>
</body>
</html>
struts2 token标签的使用
1、使用Struts2的表单标签,其中需要增加token标签。如下:
……
<%@ taglib uri="/struts-tags" prefix="s" %>
……
<s:form action="page1" theme="simple">
<s:datetimepicker name="order.date" label="购买日期" toggleType="explode" value="today"/><br/>
<s:token/>
<s:reset/><s:submit/>
</s:form>
2、在struts配置文件中增加token拦截器。(token 和 token-session 拦截器的启用,是在 struts.xml 配置文件中,既可以为包启用,也可以单独为某个 action 启用)
2.1 为 Action 启用 token
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="lee" extends="struts-default">
<action name="page1" class="org.bruce.Page1">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<result>/page1.jsp</result>
<result name="invalid.token">/page1error.jsp</result>
</action>
</package>
</struts>
2.2 为包启用 token
注意,需要name为invaid.token的result。这是当拦截器判断是重复提交的时候,会转向的结果。
<package name="lee" extends="struts-default">
<interceptors>
<interceptor-stack name="myStack">
<interceptor-ref name="token"/>
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack" />
<action name="page1" class="org.bruce.Page1">
<result>/page1.jsp</result>
<result name="invalid.token">/page1error.jsp</result>
</action>
</package>
3、invaid.token页面打印错误信息,一样可以使用struts标签。如下:
<s:actionerror/>
理解:
1、JSP使用<s:token/>标签的时候,Struts2会建立一个GUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中。
2、token拦截器会判断客户端form提交的token和session中保存的session是否equals。如果equals则执行Action。否则拦截器直接返回invaid.token结果,Action对应的方法也不会执行
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yukang_ky/archive/2009/02/05/3863798.aspx
读图片,判断大小和尺寸
java.io.File file = new java.io.File(name);
java.awt.image.BufferedImage bi = javax.imageio.ImageIO.read(file);
//大于最大宽度返回 2
int w = bi.getWidth(); //获得 宽度
if(w>65){
result=2;
}
//大于最大高度返回3
int h = bi.getHeight();//获得 高度
if(h>65&&result==0){
result=3;
}
//大于最大大小返回4
FileInputStream in = new FileInputStream(name);
if (in.available() / 1024 > 100&&result==0){
result=4;
}
if(result!=0){
if(file.exists()){
file.delete();
}
}