今天直接链接到jsp就报这个错,但经过action再到jsp就没了。
网上看看基本有两种原因:
一:
这种问题的引起往往是你在action中使用了addActionError这样的方法在汇报actionerror,而你在调用addActionError方法时传入了null值,这时候机会导致这样的问题发生,所以如果发生这样的情况请检查你的代码,看看是否因为某种问题导致给addActionError方法传入了null值,找到了解决这个问题就可以了。
二:
struts2中的标签漏了必要的属性。例如:
用struts2中的checkBoxList标签时没有给标签加name属性,加上name属性后,问题消失。
我的原因:
三:
<s:form>标签中的namespace属性!
先说一个action配置文件里的namespace,看下例
<package name="user" namespace="/user" extends="struts-default">
<action name="logon" class="cn.net.cipe.ots.user.actions.UserAction" method="logon">
<result name="success">/JSP/main.jsp</result>
<result name="input">/JSP/login.jsp</result>
<result name="error">/JSP/login.jsp</result>
</action>
</package>
那么如果在jsp里这样三种写法:
第一种
<form action="logon.action" >
.....
</form>
第二种
<form action="/user/logon.action" >
.....
</form>
第三种
<s:form action="logon.action" namespace="/user" >
.....
</s:form>
第一种写法可以通过测试,原因是FilterDispatcher会去package的根目录及下面的子目录去搜logon这个action
第二种写法是正规写法,可以通过测试,因为FilterDispatcher把form的跳转分解为logon.action和nanespace=/user,然后在package下直接命中namespace为"/user"的那个包。
第三种写法,很不幸,不能通过测试,原因是s:form这个标签居然不会在生成html页面时候把namespace的值给加到form 的action属性里面去。。。。。
那么与第三种情况正相反,如果你用s:url的话,一定要写namespace,见下例:
<s:url href="/user/logon.action"/>这种写法极容易出错,原因是不写namespace的话,产生html代码时候很混乱
<s:url href="logon.action" namespace="/user"/>正确写法!
不知道<s:form>标签不支持namespcce的写法是否是一个bug,stusts2的版本是2.1.8.1
- 大小: 71 KB
分享到:
相关推荐
4. **模板异常处理(Error Handling)`: FreeMarker允许设置异常处理策略,如在模板错误时返回默认值或抛出异常。 **五、最佳实践** 1. **模板设计原则**: 保持模板简洁,避免过多的逻辑处理,尽可能让数据模型...
FreeMarker API主要包括`freemarker.template`包,其中包含了核心的模板处理类。如`Configuration`类是FreeMarker的配置对象,它负责加载和管理模板,设置全局属性。`Template`类则代表一个已经解析好的模板,可以...
Freemarker的核心概念是模板(Template)。模板是纯文本文件,其中包含静态内容和动态占位符。动态占位符以特定语法表示,如`${expression}`或`<#if condition>`,它们会被Freemarker引擎解析并替换为实际值。模板...
7. **模板继承(Template Inheritance)**:FreeMarker的`<#import>`和`<#macro>`指令可以实现模板的继承和重用,创建可复用的代码片段。 8. **国际化(Internationalization)**:FreeMarker支持多语言环境,可以方便...
JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: <#if condition>... <#elseif condition>... <#elseif condition>......
7. **错误和异常处理**:可以使用`<#ftl>`标签的`error_handler`属性自定义错误处理方式,或者使用`<#try>`、`<#catch>`进行异常捕获。 8. **性能优化**:Freemarker允许设置缓存策略,提高模板编译和执行效率。...
freemarker.log.Logger=error ``` **代码示例** 下面是一个简单的Java代码片段,展示了如何使用Apache POI和FreeMarker生成Word文件: ```java import freemarker.template.Configuration; import freemarker....
4. **模板测试**: FreeMarker提供`TemplateTest`类,方便进行单元测试,确保模板正确渲染。 综上所述,FreeMarker是一个强大且灵活的模板引擎,通过分离视图和逻辑,提高了Web应用的开发效率和可维护性。理解和熟练...
2. **ModelAndView对象**: 用于将数据模型和视图名称传递给FreeMarker,`ModelAndView(model, "template.ftl")`。 3. **FreeMarkerConfigurer**: 配置FreeMarker,如设置模板路径、编码格式等。 **四、高级特性** ...
freemarker生成PDF, 不产生临时文件 private static Configuration configuration = null; static Template templatePdf= null; static { configuration = new Configuration(); configuration....
配置好后,你可以创建一个简单的模板文件,如`.ftl`(FreeMarker Template Language),并定义数据模型。 2. **基本语法**:Freemaker使用类似于HTML的语法,通过 `${}` 和 `[]` 符号来访问和展示数据。例如,`${...
通过创建`freemarker.properties`文件,并设置`template_update_delay`和`struts.freemarker.templatesCache`属性,可以有效提升模板处理效率。 ```properties template_update_delay=60000 struts.freemarker....
**Beetl** (Bee Template Language) 是一种轻量级的模板语言,专为忙碌的开发者设计。其核心理念在于简化模板语言的学习曲线,同时保持强大的功能性和优秀的性能。 **特性总结**: - **简洁性**: 语法基于JavaScript...
spring.freemarker.template-loader-path=/WEB-INF/ ``` 这将使得系统在出现错误时跳转到/WEB-INF/error/错误页面中。 结语 本文介绍了在Spring Boot中使用AOP统一处理web层异常的方法。该方法可以使得系统在出现...
其中包含了许多关键组件,如`VelocityContext`(用于存储模板变量)、`Template`(表示模板文件)和`VelocityRuntime`(初始化并管理Velocity环境)。 3. **avalon-logkit-2.1.jar**:Avalon LogKit是Apache软件...
在SpringMVC中,常见的视图技术有JSP、Thymeleaf或Freemarker。例如,返回"successPage"会跳转到对应的JSP页面。 5. **验证(Validation)** 在登录注册场景中,我们需要验证用户输入的数据。SpringMVC可以通过JSR...
首先,需要找到struts2的配置文件struts2-core-2.3.35.jar/template/simple/fielderror.ftl,并将其拷贝到项目的根目录下,并重命名为template.simple。然后,修改拷贝过来的fielderror.ftl文件,将其中的默认样式...
- 自定义错误页面,通常放置在`WEB-INF/views/error/`目录下。 #### 八、拦截器 1. **拦截器的作用**:可以在请求处理前后进行预处理和后处理。 2. **编写拦截器**: - 实现`HandlerInterceptor`接口。 - `...
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } ``` **页面未找到:** 当请求的页面不存在时,可以定制一个特定的页面来处理这种情况。 **示例:** ```java public class ...