1

我想在 Struts2 中重写我的 URL。

如何自定义不应显示我正在传递的参数的 URL,并且还显示具有不同名称的操作。

我不知道该怎么做。我必须为此使用插件或在以下位置配置我的代码struts.xml

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.action.extension" value="action" />
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.ui.theme" value="simple" />  
    
    
    <include file="struts-user.xml"></include>
    <include file="struts-admin.xml"></include>
    <include file="struts-common.xml"></include>
    <include file="struts-masters.xml"></include>
</struts>

告诉我如何执行以及给我解决方案。

我的网址是这样的:

/operations/MatchPredictionLevel2_index.action?sgt=102&lvl2=1&tn=MatchPredictionLevel2

我想显示我的网址

/operations/prediction 

给用户,我想根据其目的对所有 URL 做同样的事情。

4

1 回答 1

0

如果您不想显示参数传递,您可以使用解决方案。

要隐藏传递的参数,实际上您需要提交表单。您应该阻止 click 事件的默认行为并将其替换为 form 事件。

如果您还想显示不同名称的操作,可以使用上述过滤器或通配符映射

高级通配符

从 2.1.9+ 开始,可以在动作名称中定义正则表达式。要使用这种形式的通配符,必须设置以下常量:

<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="regex" />

正则表达式可以有两种形式,最简单的一种是 {FIELD_NAME},在这种情况下,FIELD_NAME动作中带有 的字段将填充匹配的文本,例如:

<package name="books" extends="struts-default" namespace="/">
    <action name="/{type}/content/{title}" class="example.BookAction">
  <result>/books/content.jsp</result>
    </action>
</package>
于 2014-08-12T08:47:54.980 回答