【问题标题】:Diplay struts2 error in html page在html页面中显示struts2错误
【发布时间】:2012-10-20 16:04:33
【问题描述】:

我使用addActionMessageaddActionError 方法在struts2 动作类中添加了我的错误和消息。 现在我想要在 html 页面中显示此消息和此错误的代码?可以打印吗?

【问题讨论】:

    标签: html css jsp model-view-controller struts2


    【解决方案1】:

    <s:actionerrors />
    

    <s:actionmessages />
    

    JSP 中的标签

    并且,为了获得更好的图形结果,请使用特定的 div 容器(例如,一个红色,一个绿色)并在之前检查您是否有消息或错误(仅在不为空时打印 div):

    <s:if test="hasActionErrors()">
       <div class="feedError">
           <s:actionerrors />
       </div>
    </s:if>
    
    <s:if test="hasActionMessages()">
       <div class="feedOk">
           <s:actionmessages />
       </div>
    </s:if>
    

    在 CSS 中

    .feedError{
        width: 100%;
        border: 10px solid red;
    }
    
    .feedOk{
        width: 100%;
        border: 10px solid green;
    }
    

    编辑:不,据我所知,您无法直接从 HTML 获取操作错误和消息。 您可以对从 Session 中检索它们并在 JSon 中返回它们的操作进行 ajax 调用,但这确实是矫枉过正、设计不佳且没有必要。

    作为一种解决方案,您可以使用另一种视图技术来代替 JSP; 它不仅仅是普通的 HTML,但至少你不能在页面内使用 Scriptlet,如果这是你使用 JSP 的问题的话。

    例如,您可以使用FreeMarker Template

    以前的 JSP sn-p 在 .ftl 文件中会变成这样(未经测试):

    <#if (actionErrors?size>0)>
        <div class="feedError">
            <@s.actionerror />
        </div>
    </#if>
    
    <#if (actionMessages?size>0)>
        <div class="feedOk">
            <@s.actionmessage />
        </div>
    </#if>
    

    Velocity(同样,未经测试):

    #if( $actionErrors.size() > 0 )
       <div class="feedError">
       #foreach( $msg in $actionErrors )
           [$msg]<br />
       #end
       </div>
    #end
    
    
    #if( $actionMessages.size() > 0 )
       <div class="feedOk">
       #foreach( $msg in $actionMessages )
           [$msg]<br />
       #end
       </div>
    #end
    

    注意:如果不使用 JSP 的原因是为了防止 scriptlet,您可以在 web.xml 添加配置此行为

    <jsp-config>
            <jsp-property-group>
                    <url-pattern>*.jsp</url-pattern>
                    <scripting-invalid>true</scripting-invalid>
            </jsp-property-group>
    </jsp-config> 
    

    在 Struts2 中使用 JSP 并不是唯一的方法,但它是最简单和最快的,恕我直言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多