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 主网站所说,您必须执行以下操作:

<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,你会在你的视图中收到一个请求参数,名字是username,值是Administrator。只需遵循这个约定。

如果您想从父 id继承,只需为每个 type 编写一个映射。例如你可以写:

<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,但我认为不可能将它们与静态字符串片段连接起来。要以您希望的方式使用它们,您应该从请求中获取参数并在您的 bean 中处理完整的目标 url。

于 2013-01-14T14:13:14.137 回答
0

我是这样创建的:

漂亮的配置.xml

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

静态视图Bean.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 回答