4

いくつかの変数値をpretty-config.xml構成ファイルのview-idノードに渡したい。サンプルの場合:

私はそのようなことをしたい:

 <url-mapping id="allReports">
        <pattern value="/report/#{type}" />
        <view-id value="/pages/report/#{type}.xhtml" />
    </url-mapping>

しかし、私はエラーが発生しました:

java.lang.IllegalArgumentException: java.net.URISyntaxException: Illegal character in fragment at index 18: http://localhost/#{type}.xhtml

誰かがそれを行う方法を知っていますか?

ありがとうございました。

4

2 に答える 2

3

PrettyfacesのメインWebサイトにあるように、次のことを行う必要があります。

<url-mapping id="view-user">
    <pattern value="/user/{username}" />
    <view-id value="/user/view.xhtml" />
</url-mapping>

これはと同等/user/view.xhtml?username=yourParamです。このURLを入力すると、ビューに名前と値/user/Administratorのリクエストパラメータが表示されます。この規則に従ってください。usernameAdministrator

親IDから継承する場合は、タイプごとにマッピングを記述します。たとえば、次のように書くことができます。

<url-mapping parentId="view-user" id="admins">
   <pattern value="/admin/#{user}" /> 
   <view-id value="/user/admins/view.xhtml" />
</url-mapping>

<url-mapping parentId="view-user" id="externals">
    <pattern value="/external/#{user}" /> 
    <view-id value="/user/externals/view.xhtml" />
</url-mapping>

また、動的なビューIDがありますが、静的な文字列部分とそれらを連結することはできないと思います。それらを希望どおりに使用するには、リクエストからparamを取得し、Bean内の完全な宛先URLを処理する必要があります。

于 2013-01-14T14:13:14.137 に答える
0

私はそれをそのように作成しました:

pretty-config.xml

<url-mapping id="static">
    <pattern value="/s/#{staticViewBean.requestPath}" />
    <view-id value="#{staticViewBean.getViewId}" />
</url-mapping>

StaticViewBean.java

@Controller("staticViewBean")
@Scope("request")
public class StaticViewBean {

    private String requestPath;

    public String getViewId() {
        return "/WEB-INF/pages/s/" + requestPath + ".xhtml";
    }

    public String getRequestPath() {
        return requestPath;
    }

    public void setRequestPath(String requestPath) {
        this.requestPath = requestPath;
    }

}
于 2017-09-28T08:23:48.450 に答える