私は、URLをお持ちの場合:www.myurl.com/books
と新しい作成できるようにしたい<s:url>
著者と年にフィルタリングを:www.myurl.com/books/Sartre/1942
渡すことSartre
と1942
、適切な結果をブックページをレンダリングするアクションクラスにパラメータとして。Struts2でこれを行う方法は?
私はバックエンドロジックを配置しているので、次の場合に最適です。
www.myurl.com/books
ます。www.myurl.com/books/Sartre/1942
getリクエストがページをロードした後でも(www.myurl.com/books
つまりではなく)、動的にレンダリングされたURLをアドレスバーに表示します。必要Advanced Wildcard Mappings
です。
ドキュメントから:Struts2の高度なワイルドカードマッピング:
高度なワイルドカード
2.1.9以降では、アクション名で定義された正規表現を定義できます。この形式のワイルドカードを使用するには、次の定数を設定する必要があります。
<constant name="struts.enable.SlashesInActionNames" value="true"/> <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/> <constant name="struts.patternMatcher" value="regex" />
正規表現は2つの形式にすることができます。最も単純な形式はです
{FIELD_NAME}
。この場合FIELD_NAME
、アクション内のinが含まれるフィールドには、一致するテキストが入力されます。次に例を示します。<package name="books" extends="struts-default" namespace="/"> <action name="/{type}/content/{title}" class="example.BookAction"> <result>/books/content.jsp</result> </action> </package>
この例では、URL
/fiction/content/Frankenstein
が要求されると、BookActionのフィールド "type
"は" "に設定されfiction
、フィールド "title
"は" "に設定されFrankenstein
ます。
Struts2-Convention-Pluginを使用している場合、例は次のようになります。
@Action(value="/books/{author}/{year}")
public class Books extends ActionSupport {
private String author;
private Integer year;
/* ...GETTERS AND SETTERS HERE... */
public String execute(){
/* ...LOAD DATA HERE... */
if (noDataFound)
return NONE;
return SUCCESS
}
}
prepare()
メソッドでこれらのパラメータを操作する必要がある場合は、この質問をお読みください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加