例外是告诉您确切在哪里查找错误:
org.apache.jasper.JasperException:表达式eKey在template / simple /
fielderror.ftl的 第32行第23列中 未定义 。-类:freemarker.core.TemplateObject
罪魁祸首是fieldError
无与伦比的fieldName
。经过测试(在注释中),结果为
full_name, 显然 在整个链中
未正确处理下划线 :
<s:textfield id="full_name" name="full_name" ... />...<s:fielderror fieldName="full_name" cssClass="alert-danger"/>
full_name然后应
fullName使用变量及其Getter和Setter 更改为与之一样长,以便工作:
<s:fielderror fieldName="fullName" cssClass="alert-danger"/>
还要确保拥有所有最新且一致的struts库和插件,并带有正确版本的外部依赖项(Hibernate验证器等)
就是说,我想给您一些有关变量命名的建议:
始终对带有多个单词的变量使用camelCase:
password
ispassword
(单个单词,虽然是复合单词),但username
anduseremail
应该是userName
anduserEmail
。您已针对单个类的6个变量使用了3种不同的约定…由于这些是
User
Class 的变量,因此请避免user
在变量名称中重复:userid = id,username = name,userPhoneNumber = phoneNumber等…如果您这样做是为了在JSP中提高可读性,则只需避免使用<s:push>
标记可能会感到困惑。
如果您刚开始,更改数据库列名称应该很容易…否则,请在下一个项目中保留此建议。
PS:请注意,使用JPA和Hibernate,您可以在persistence.xml中使用此设置自动使用camelCase变量和带下划线的列名(
phoneNumber在Entity中,
phone_number在数据库中):
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" />
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)