如何在一个页面中创建动态视图

时间:2010-10-15 10:23:08

标签: jsf prettyfaces

我有一个页面index.jsf,我使用ui:include for include页眉和页脚,我想在内容中动态查看,这意味着当用户点击注册链接时内容更改页眉和页脚没有改变< / p>

我的代码样本是:

<ui:include render="#{mybean.include}"/>

在支持bean中,我的代码将:

public void getInclude(){
    if("page" == a){
        return "a.jsf";
    }
    else if("page" == b) {
     return "b.jsf";
    }
}

和我使用漂亮的url示例 以旧方式jsf页面将显示url

http://localhost/index.jsf?page=a or http://localhost/index.jsf?page=b

但我想使用漂亮的网址而不是旧的方式,例如:

http://localhost/index/a

我该怎么做(这意味着使用漂亮的面孔以及我如何使用if-else来做什么?) 我可以在这里解释上面的问题 而不是上面我使用if(“page”= a)如果我使用旧方式粘贴参数url http://loalhost/index.jsf?page=a 但如果我使用preter url或漂亮的面孔我会为if-else语句做什么? if(?? = a)

2个问题请帮助我谢谢你

  ==========================================================

现在我设置漂亮的面孔并且运作良好但我不知道如何从Prettyfaces获取参数,在Pretty-config.xml中我是配置页面跟随:

主页(内容在那里变化动态)

<url-mapping id="mainpage">
 <pattern value="/home" />
 <view-id>/faces/main.xhtml</view-id> 
</url-mapping>

Page1

<url-mapping id="mainpage">
 <pattern value="/home/#{page:content1}" />
 <view-id>/faces/content1.xhtml</view-id> 
</url-mapping>

第2页

<url-mapping id="mainpage">
 <pattern value="/home/#{page:content2}" />
 <view-id>/faces/content2.xhtml</view-id> 
</url-mapping>
第一页中的

我使用ui:include for dynamic subview

<ui:include src=#{bean.includePage}/>

我的bean有一个获取包含页面的方法

  public String getIncludePage(){
       if(page == null){
        return "content.xhtml";
       }
       else if (page.equals(content1)){
        return "content1.xhtml";
      }
      else if (page.equals(content2)){
        return "content2.xhtml;
      } 
}

但我无法在一个页面中更改动态页面视图内容

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题你的问题与PrettyFaces无关。

您是否希望最终使用共享相同页眉和页脚的不同页面?在这种情况下,您应该真正了解使用Facelets进行模板化,因为这只是它的用例。

这是关于Facelets如何工作的简短示例:

template.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
  <title>
    <ui:insert name="title" />
  </title>
  <link rel="stylesheet" type="text/css" href="./css/main.css"/>
</head>

<body>

<div id="center">
  <ui:insert name="title" />
  <hr />
  <ui:insert name="content" />
</div>

</body>

</html>

some-page.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="/template.xhtml">
  <ui:define name="title">My Page Title</ui:define>
  <ui:define name="content">

    <p>
      This is the main content area
    </p>

  </ui:define>
</ui:composition>
</html>

我建议您阅读Facelets fits JSF like a glove。这是一篇关于Facelets的精彩文章。