页面参数是seam中真正唯一的特性。他们使用值表达式将请求参数绑定到模型属性上。请求参数既可以是表单POST数据,也可以是查询字符串参数。
“模型”可以是任何Seam组件或者是JSF中的managed bean。当收到视图ID的所示的JSF的视图请求时,在进入该页面时——(在Render Response之前)
与该视图ID关联的每个页面参数都要执行求值。然后利用值表达式所映射的其JavaBean的设置方法,将这个值付给模型属性。
<h:outputLabel value="案件名称:"/>
<h:inputText value="#{lawCaseList.searchString}" >
<h:commandButton value="搜索" action="/CaseList.xhtml">
那么在相应的CaseList.page.xml(细粒度配置文件)中,就会有相应的参数:
<param name="search" value="#{lawCaseList.java}">
这样的话,在你输入姓名之后,在地址栏就会显示如在配置文件中的“名称/值”对!
http://localhost:8080/CaseList.seam?dptId=0&sort=xtbh&firstResult=0&shiju=false&orderField=xtbh&shezhong=false&liangwei=false&maxResults=25&logic=and&shengting=false&orderDirection=desc&duban=false&dir=desc&search=%E6%9F%90%E6%9F%90%E6%9F%90&lastYear=false&memberId=0&cid=18
另外这里涉及了一些关于JSF中RESTful导航和书签URL的一部分知识,需要弄清楚,写在另一篇文章里。
在JSF中,一个get请求,用于显示某项特定的信息,项目ID被提供一个查询参数,当接受到参数时,参数值必须被传送到适当的bean中。如下代码所示:
<f:Metadata> <f:viewParam name="item" value="#{catalog.currentItem}"> </f:Metadata>
在Seam中这种的方式转换为细粒度配置文件里面:
<param name="item" value="#{catalog.curentItem}">