FreeMarker模板错误!在struts2

FreeMarker模板错误!在struts2,第1张

FreeMarker模板错误!在struts2

例外是告诉您确切在哪里查找错误:

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验证器等)


就是说,我想给您一些有关变量命名的建议:

  1. 始终对带有多个单词的变量使用camelCase:

    password
    is
    password
    (单个单词,虽然是复合单词),但
    username
    and
    useremail
    应该是
    userName
    and
    userEmail
    。您已针对单个类的6个变量使用了3种不同的约定…

  2. 由于这些是

    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" />


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5676083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存