struts.xml配置文件
<constant name="struts.devMode" value="true"/><!-- 开发模式 --> <constant name="struts.action.extension" value="action,,do,webwork"/><!-- 配置後綴名 --> <package name="struts2" namespace="/" extends="struts-default"> <action name="rand" class="com.umgsai.txyl.util.RandomAction" method="execute"> <result type="stream"> <param name="contentType">image/jpeg</param> <param name="inputName">inputStream</param> </result> </action> <action name="check" class="com.umgsai.txyl.util.CheckAction"> <result name="success">/index.jsp</result> <result name="input">/login.jsp</result> </action> </package>
--------------------------------------------------------------------------------------
动态方法调用
第一种方法
<form action="simple" method="post"> <input type="hidden" name="method:add"/><!-- 指定要调用的方法,相当于*/simple?method:add --> username<input name="username"><br> password<input name="assword" type="password"><br/> <input type="submit" value="提交"/> </form>
struts2.xml
<action name="simple" class="com.umgsai.test.SimpleAction" > <result name="add_input">/add_input.jsp</result> <result name="add_success">/add_success.jsp</result> <result name="update_input">/update_input.jsp</result> <result name="update_success">/update_success.jsp</result> </action>
SimpleAction.java
public class SimpleAction { public String addInput(){ System.out.println("進入添加"); return "add_input"; } public String add(){ System.out.println("执行添加操作"); return "add_success"; } public String updateInput(){ System.out.println("进入更新页面"); return "update_input"; } public String update(){ System.out.println("执行更新方法"); return "update_success"; } public String delete(){ System.out.println("执行删除方法"); return "delete_success"; } }
执行完毕后跳转到add_success.jsp
第二种方法
http://localhost:8080/structstest/simple!add.action
执行完毕后跳转到add_success.jsp
第三种方法
修改第一种方法中的
- <action name="simple" class="com.umgsai.test.SimpleAction" >
为
- <action name="simple_*_*" class="com.umgsai.test.SimpleAction" method="{1}_{2}">
Struts2 OGNL表达对各种方法的调用
取ActionContext中的内容加#
静态方法调用
在struts.xml中加 <constant name="struts.ognl.allowStaticMethodAccess" value="true"> <s:property value="@cn.com.xalead.tools.Utils@toUpperCase('Hello World!')"/> <s:property value="@cn.com.xalead.tools.Utils@toUpperCase(username)"/> <s:property value="@cn.com.xalead.tools.Utils@toUpperCase(user.username)"/> <s:property value="@cn.com.xalead.tools.Utils@toUpperCase(#user.sex)"/>
动态方法调用
<s:property value="new cn.com.xalead.tools.Utils().substring('Hello World!',2,5)"/>
方法可以嵌套调用
调用Action中的方法
<s:property value="getUtils().substring('Hello World!',2,5)"/> <s:property value="utils.substring('Hello World!',2,5)"/> <s:property value="out(#user.username)"> <s:property value="getUsername()"/>
配置文件中课传递动态参数
<result name="static">/static.jsp?id=#{user..id}</result> <result name="static">/static.jsp?id=#{getUser()..id}</result> <result name="static">/static.jsp?id=#{#user..id}</result> //user存在ActionContext中 <result name="login">%{#loginJsp}</result> 要转向的路径存在ActioContext中的loginJsp中
Eclipse窗口-首选项-Java-编辑器-内容辅助-java自动激活触发器.abcd.....
动态include页面
<li> <s:set var="incPage" value="'/a.html'"/> <s:include value="%{#incPage}"></include> </li>
文本框只能输入数字
<input type="text" name="chapter_id" id="chapter_id" onkeyup="value=value.replace(/[^d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))" class=""value=""/>
两种action的写法
<a href="user_logout.action?method:logout">退出登录</a> <input type="button" class="button" value="退出登录" onClick="javascript:window.location.href='user_logout.action?method:logout'">
javascript函数传参
<a href="#" onclick=" article_modify('1c18ac47-57ce-491b-9703-d1114b6d988a'); return false;">修改</a><!--传字符串加单引号--> <a href="#" onclick=" article_modify(123456); return false;">修改</a><!--传数字不加单引号-->
本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1117618