Struts中OGNL表达式的作用

JSP页面                        

<!-- 其它选项类型是下拉列表 -->
<s:elseif test="#q.otherStyle == 2">
<select name='q<s:property value="#qId"/>other'>
<s:iterator var="option" value="#q.otherSelectOptionArr" status="optst">
<option value='<s:property value="#optst.index" />'
<s:property value="setTag('q' + #qId+'other',#optst.index,'selected')" />
><s:property /></option>
</s:iterator>
</select>

</s:elseif>

利用OGNL表达式                 <s:property value="setTag('q' + #qId+'other',#optst.index,'selected')" /> 调用action里的方法



struts拦截器配置问题Unable to find interceptor class referenced by ref-name defaultStack


拦截器配置样例   

<package name="struts-testlogin" extends="struts-default">

        <interceptors>
            <interceptor name="testloginInterceptor" class="test.web.filter.TestLoginItcp" />
            <interceptor name="checkloginInterceptor" class="test.web.filter.CheckLoginItcp" />
            <interceptor-stack name="testInterceptor">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="testloginInterceptor" />
                <interceptor-ref name="checkloginInterceptor" />
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="testloginInterceptor">
        </default-interceptor-ref>

    </package>

一、

其中要注意package中需要有extends="struts-default",否则在下面会包找不到“defaultStack”的错误,这个defaultStack是struts中默认的配置,

需要package配置继承下默认的struts配置才能用。
同理如果需要在拦截其中配置其他的拦截引用: <interceptor-ref name="testloginInterceptor" />
要不在本<interceptors></interceptors>中配置 <interceptor name="testloginInterceptor" class="test.web.filter.TestLoginItcp" />
或者继承一个配置了 <interceptor name="testloginInterceptor" class="test.web.filter.TestLoginItcp" />的拦截器的父配置。

二、

同样的:
当在action中配置拦截器时,也需要进行定义或者继承父配置:

    <package name="test" namespace="/Test" extends="struts-default">
        <action name="getName" class="test.TestAction">
            <result>test.vm</result>
        </action>
        <action name="getLoginName" class="test.TestAction">
            <result>testLogin.vm</result>
            <!-- 使用此拦截器 -->  
            <interceptor-ref name="testloginInterceptor" /> 
        </action>
    </package>
上述配置的拦截器是会报“ Unable to find interceptor class referenced by ref-name testloginInterceptor”这个错误的

因为这个package继承的是"struts-default"而不是struts-testlogin。
将<package name="test" namespace="/Test" extends="struts-default">改为<package name="test" namespace="/Test" extends="struts-testlogin">后就ok了

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值