我想知道使用get请求,参数和ajax请求与JSF一起使用的常见方式是什么?如何使用get请求和参数以及JSF和ajax请求?
我想要实现的是将id参数传递给JSF页面,从数据库中检索具有给定参数的实体并在JSF页面上显示该实体。然后,我想对实体进行一些更改并将其填充回数据库(通过ajax)。
我一直坚持这一步,在那里我想填充更改回数据库。这是我到目前为止:我有一个非常简单的JSF页面和一个控制器(ManagedBean)。
JSF页面
<h:body>
<h:form id="myForm">
<p:messages />
<h:panelGrid columns="3">
<h:outputLabel value="#{requestController.id}" />
<p:commandButton value="Update" action="#{requestController.updateEntity}" update="myForm" />
</h:panelGrid>
</h:form>
</h:body>
控制器
@Component("requestController")
@Scope("request")
public class RequestController {
@Value("#{request.getParameter('id')}")
private String id;
private String entity;
@PostConstruct
public void init() {
if(id == null || id.equals("")) {
entity = "Entity not found";
}
else if("1".equals(id)) {
entity = "FirstEntity";
}
else {
entity = "SecondEntity";
}
}
public String getEntity() {
return entity;
}
public void updateEntity() {
entity += "_updated";
}
public String getId() {
return id;
}
}
我可以用一个id参数打开JSF页面和实体将正确显示。但是,当我点击更新按钮时,控制器将被新实例化并且id参数消失。
在JSF中处理请求参数和Ajax请求的常见方式是什么?
,我不知道你为什么正在使用组件和范围,我猜他们是春天的注释..但这不是jsf – Damian 2012-08-14 11:50:49
@Damian当你使用spring来管理你的bean时,你可以使用'@ Component'和'@ Scope'。这完全有效,它的确是JSF。 – flash 2012-08-14 11:53:49
我不这样做Spring,所以我不知道它在这个特定的构造中扮演了哪个角色,但是在JSF EL中,您将通过'#{param.id}'引用EL中的请求参数,而不是'#{request .getParameter( '编号')}'。至少,这是使用JSF'@ ManagedBean' /'@ ManagedProperty'而不是那些Spring注释时的工作原理。 – BalusC 2012-08-14 15:05:12