今天抽出点时间复习了一下,李刚<<struts2权威指南>>,其中有一章,关于客户端验证的,按照书上步骤,最后报了一个freemarker.template.TemplateModelException: Method public java.util.List错误,
问题:在使用struts做客户端校验时,form中增加validate="true"属性,login.jsp代码如下:
<s:form action="userAddAction" method="post" validate="true">
<s:textfield name="username" key="username"></s:textfield>
<s:textfield name="firstname" key="firstname"></s:textfield>
<s:submit key="login"></s:submit>
</s:form>
截取部分错误代码
------------------------------------------------------
异常代码:
2011-8-9 17:14:33 freemarker.log.JDK14LoggerFactory$JDK14Logger error
严重:
Method public java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception when invoked on org.apache.struts2.components.Form@dd89f9
The problematic instruction:
----------
==> list tag.getValidators("${tagName}") as validator [on line 46, column 9 in template/xhtml/form-close-validate.ftl]
in include "/${parameters.templateDir}/xhtml/form-close-validate.ftl" [on line 25, column 1 in template/xhtml/form-close.ftl]
----------
Java backtrace for programmers:
----------
freemarker.template.TemplateModelException: Method public java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception when invoked on org.apache.struts2.components.Form@dd89f9
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
………
------------------------------------------------------
本着内事不决问度娘,外事不决问谷歌的态度,发现有人说了
解决办法1:
去掉表单中的validate="true"属性,即取消了Struts2框架的客户端验证,改用它的服务端验证。这不是解决问题的办法,呵呵!
解决办法2:给action补充后缀.action即可解决这个问题,修改后的login.jsp代码如下:
<s:form action="userAddAction.action" method="post" validate="true">
<s:textfield name="username" key="username"></s:textfield>
<s:textfield name="firstname" key="firstname"></s:textfield>
<s:submit key="login"></s:submit>
</s:form>
但是方法2会报另一个错误
2015-3-10 11:48:29 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: No configuration found for the specified action: 'userAddAction.action' in namespace: '/login'. Form action defaulting to 'action' attribute's literal value.
2015-3-10 11:48:29 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: No configuration found for the specified action: 'userAddAction.action' in namespace: '/login'. Form action defaulting to 'action' attribute's literal value.
解决办法3:在struts.xml中填加一个
<action name="loginInit" class="com.tungkong.action.RegistAction">
<result name="input">/login.jsp</result>
<result name="success">/success.jsp</result>
</action>
login.jsp代码如下:
<s:form action="userAddAction" method="post" validate="true">
<s:textfield name="username" key="username"></s:textfield>
<s:textfield name="firstname" key="firstname"></s:textfield>
<s:submit key="login"></s:submit>
</s:form>
访问的时候写:http://localhost:8080/test/loginInit,这样就不会报错了,如果有更好的解决方式,欢迎大家讨论!
相关推荐
The org.apache.struts2.views.freemarker.FreemarkerManager implementation class org.apache.struts2.views.freemarker.FreemarkerManager接口名 struts.i18n.encoding The encoding to use for ...
Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展、模块化和高度交互性的MVC(模型-视图-控制器)应用。在Struts2中,`struts.xml`是核心配置文件,它定义了应用的行为、动作、结果和其他组件。为了...
Struts 2以其灵活性和可扩展性著称,它允许开发者通过拦截器(Interceptor)机制来定制请求处理流程,同时支持多种视图技术,如JSP、FreeMarker、 Velocity等。此外,Struts 2还集成了其他流行的技术,如Spring、...
`com.jagregory.shiro.freemarker.ShiroTags` 是 Jagregory 开发的一个扩展,将 Apache Shiro 的安全功能与 Freemarker 模板引擎相结合。这个类库提供了一系列的 Freemarker 标签,允许开发者在 Freemarker 模板中...
11. struts.freemarker.manager.classname:这是一个FreemarkerManager实现类,Struts2用于处理FreeMarker模板。 12. struts.i18n.encoding:这是国际化信息的内码,Struts2用于处理国际化信息。 13. struts.i18n....
import freemarker.template.Template; import freemarker.template.TemplateException; // 创建配置对象 Configuration cfg = new Configuration(Configuration.VERSION_2_3_31); cfg....
4. **代码生成逻辑**:这通常是Java代码的一部分,负责创建数据模型,加载模板,并调用FreeMarker的`Template`类的`process`方法,将数据模型和模板结合,生成最终的代码。 在描述中提到的CSDN博客文章"42193235...
这个"jdk1.8下可以使用的freemarker.jar"文件是专门为Java 8环境优化的Freemarker库,使得开发者能够在Java 8平台上无缝地集成和使用Freemarker进行动态内容渲染。 Freemarker的核心概念是模板(Template),它是一...
spring.freemarker.template-loader-path=classpath:/templates/ ``` 或 ```yaml spring: freemarker: template-loader-path: classpath:/templates/ ``` 2. **创建Freemarker模板文件** - 在`src/main/...
org.apache.struts2.views.freemarker, org.apache.struts2.views.freemarker.tags, org.apache.struts2.views.jsp, org.apache.struts2.views.jsp.iterator, org.apache.struts2.views.jsp.ui, org.apache.struts2...
8. **插件系统**:Struts 2拥有丰富的插件库,如JSON插件、REST插件、Freemarker插件等,可以方便地扩展功能。 **Struts 2.3.16.1版本更新内容:** 作为Struts 2的一个稳定版本,2.3.16.1可能包括了安全修复、性能...
`freemarker.jar`,用于视图层的FreeMarker模板引擎;还有`xwork-core.jar`,它是Struts2的前身XWork的核心库,包含了许多基础的Action和结果处理机制。 4. **Servlet容器相关库**:如`servlet-api.jar`,这是与web...
Struts2 和 Freemarker 是两个在Java Web开发中广泛使用的框架和模板引擎,它们结合使用可以构建出高效、可维护的MVC应用。Struts2 是一个基于MVC设计模式的开源框架,它继承了经典的Struts1框架,并在很多方面进行...
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> ``` 这里我们设置了FreeMarker模板的加载路径,并定义了一个结果类型`freemarker`,将动作结果映射到...
FreeMarker.CHM(帮助文档),供大家学习 ^_^
Struts2和FreeMarker是两种在Java Web开发中广泛应用的技术。Struts2是一个强大的MVC(Model-View-Controller)框架,它极大地简化了构建基于Java的Web应用程序的过程。而FreeMarker则是一种模板引擎,主要用于生成...
例如,如果在项目根目录下的`struts-default.xml`文件与新版的`struts2-core-2.3.32.jar`中的同名文件有冲突,可以考虑删除根目录下的文件,并将必要的配置项合并到项目内部的`struts-default.xml`文件中。...
例如,你可以通过`org.freemarker.template.Configuration`来初始化配置,`Template`来加载模板,`ModelMap`或`Hashmap`来存储数据模型。 2. **FreeMarkerUtil.java**:这是一个示例Java代码,通常包含了一些基础...
总结来说,Freemarker.jar是Java Web开发中一个强大的模板引擎,它与JDK 1.8兼容,能有效地将数据和视图分离开,使前端展示与后端业务解耦。在实际项目中,了解和掌握Freemarker的使用技巧,可以极大地提高开发效率...