用例是直接从超链接(Non-Faces-Request)调用JSF 2.x Backing Bean上的方法.做这个的最好方式是什么?
我想要做这样的事情:
链接:
http://localhost/show.xhtml?id=30&backingbeanname=loaddata&method=load
Run Code Online (Sandbox Code Playgroud)
支持豆:
@Named (value = "loaddata")
public class DataLoader {
public void load(int id){ ... }
}
Run Code Online (Sandbox Code Playgroud)
使用<f:viewParam>目标视图设置GET参数bean属性,并使用<f:event type="preRenderView">对他们的调用操作.
在show.xhtml:
<f:metadata>
<f:viewParam name="id" value="#{bean.id}" required="true" />
<f:event type="preRenderView" listener="#{bean.load}" />
</f:metadata>
<h:message for="id" />
Run Code Online (Sandbox Code Playgroud)
在托管bean中:
private Integer id;
private Data data;
public void load() {
data = service.find(id);
}
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的示例中,URL http://localhost/show.xhtml?id=30就足够了.你总是可以设置更多的参数作为bean属性,并有一个"上帝"bean委托一切,但这毕竟可能是笨拙的.
另外请注意,你可以附加Converter到<f:viewParam>(如,你可以做的<h:inputText>).这种load()方法很可能完全是多余的.
<f:metadata>
<f:viewParam name="id" value="#{bean.data}"
converter="dataConverter" converterMessage="Bad request. Unknown data."
required="true" requiredMessage="Bad request. Please use a link from within the system." />
</f:metadata>
<h:message for="id" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3514 次 |
| 最近记录: |