- <package/>标签里,这几个标签是有严格顺序的,正确顺序如下:
- 先<result-types>,必须有<result-type/>项;
- 再<interceptors>,必须有<interceptor/>项;
- 接下来是<default-interceptor-ref name="completeStack">default-interceptor-ref>;
- 然后是<global-results>,必须有<result/>项;
- 然后<global-exception-mappings>,子项如<exception-mapping result="errorPage" exception="java.lang.Exception"/>
- 最后才是<action/>
- =========================================================================
- <action name="test">
- <interceptor-ref name="exception"/>
- <interceptor-ref name="basicStack"/>
- <exception-mapping exception="com.acme.CustomException" result="custom_error"/>
- <result name="custom_error">custom_error.ftlresult>
- <result name="success" type="freemarker">test.ftlresult>
- action>
- =========================================================================
- webwork运行流程:
- 默认执行execute()方法,该方法默认返回SUCCESS;
- =====分页================================================================
- <Script language="JavaScript" src="/js/pagenumber.js">Script>
- <script Language="JavaScript">
- listNumUrl("courseInfoList.action?&pageNum=",${pageNum},${allPageNum});
- script>
- ======相关扩展===========================================================
- Ognl工作原理:
- OgnlValueStack stack=new OgnlValueStack();
- stack.push(new User())://首先将打算赋值的对象压入栈中
- stack.setValue("name","erica");//为栈顶对象User指定的属性名name赋值
- =====额外收获===========================================================
- HttpSession是一个接口,
- Properties实现了继承了HashTable(实现了Map接口),也就是说它保存的也是值-键对象,它的setProperty("name","value")实质上就是保存到HashTable里了。
- -------------------------------------------------------------------------------------------------
- <ww:head theme="ajax" calendarcss="calendar-green"/>默认不是ajax
- ======上传=============================================================
- <action name="itemPersonalInput" class="cn.com.s520.course.ItemPersonalInputAction">
- <interceptor-ref name="fileUpload">
- <param name="allowedTypes">
- application/msword,image/gif,image/jpeg,image/pjpeg,application/x-shockwave-flash
- param>
- <param name="maximumSize">10485760param>
- interceptor-ref>
- <interceptor-ref name="basicStack"/>
- <result name="input" type="freemarker">/course/ItemPersonalInput.ftlresult>
- <result name="error" type="freemarker">/course/ItemPersonalInput.ftlresult>
- <result name="success" type="redirect">/itemPersonalList.actionresult>
- action>
- private File images;
- private String imagesContentType;
- private String imagesFileName;//得到不含路径的文件名,如test.jpg
- ******文件下载=========================================================
- <result name="success" type="stream">
- <param name="contentType">image/jpegparam>
- <param name="inputName">imageStreamparam>
- <param name="contentDisposition">filename="logo.png"param>
- <param name="bufferSize">4096param>
- result>
- 1,<param name="contentType">application/x-msdownloadparam>
- contentType设成 application/x-msdownload 就可以。这样浏览器会保证弹出一个下载文件的对话框。
- 2,inputName 这个比较重要,这个名字是输入流的名称, 以后要steam result的实现类中为根据OGNL的表达式去查找的。
- contentDisposition 这个是下载之后,保存在用户端的文件名称
- 3,另外一个参数:contentLength就是下载文件的大小,webwork的stream result似乎实现有问题,不能根据文件的大小动态进行设置,只能写死。
- 这个参数的意义是告诉浏览下载的文件有多大,以便浏览器正确的显示进度条。如果这个功能很重要的话,可以重新写一个RESULT来实现。
- ======================================================================
- <result>/form.jspresult>如果不指明,默认为success
- <action name="userReg" class="com.opensymphony.xwork.ActionSupport">
- <result name="input">/app/userreg.ftlresult>
- action>
- 这里将不会出现预期的页面,因为默认为success,不会转向我们指定的input页面
- ======================================================================
- <result name="no-content" type="header">
- <param name="status">204param>
- <param name="headers.customHeaderA">Aparam>
- <param name="headers.customHeaderB">Bparam>
- result>
- ======================================================================
- chain视图:
- 同一个包里,可设置type为chain,对应action的扩展名也可以不写,
- <result name="error" type="chain">
- <param name="actionName">barparam>
- result>
- 不同包里
- <result name="errorPage" type="chain">
- <param name="namespace">/param>
- <param name="actionName">barparam>
- result>
- 或者设置type为redirect,重定向过去
- <action name="index" class="com.opensymphony.xwork.ActionSupport">
- <result name="success" type="redirect">/course/courseInfoList.actionresult>
- action>
- ======================================================================
- <default-interceptor-ref name="defaultStack"/>
- 这里只是在你没有设置拦截器时才用到,如果设置拦截器了,就不会调用这个了,我开始还以为设置没设置拦截器都调用这个呢
webwork笔记之配置
最新推荐文章于 2023-07-30 09:47:19 发布