我有一个实体的简单应用程序。实体是Car,所以我制作了CRUD方法和“全车”方法。我正在使用JSF创建一个网站,其中包含旁边有编辑/显示/删除链接的汽车列表。而不是使用POST我想在显示/编辑链接上使用GET。到目前为止,我已经使用带有id作为参数的h:link,并将它们作为viewParams在show页面中设置。
整个应用程序有效,但我有一个问题。目前我正在进行EJB调用,该调用从set-method中的ID中找到适当的汽车,用于支持bean中的汽车ID。我还没有找到另一种方法,所以我想知道这是否正确?因为我没有一个与h:commandButton相同的方法调用的action方法,并返回它将导航到的页面的字符串。
答案 0 :(得分:2)
您可以使用<f:event type="preRenderView">
在呈现视图之前触发视图操作。
E.g。
<f:metadata>
<f:viewParam name="id" value="#{cars.id}" />
<f:event type="preRenderView" listener="#{cars.init}" />
</f:metadata>
与
@ManagedBean
@ViewScoped
public class Cars {
private Long id;
private Car car;
@EJB
private CarService service;
public void init() {
car = service.find(id);
}
// ...
}
请注意,在即将推出的JSF 2.2中,<f:event type="preRenderView">
可以替换为更加自我记录的新<f:viewAction>
:
<f:metadata>
<f:viewParam name="id" value="#{cars.id}" />
<f:viewAction action="#{cars.init}" />
</f:metadata>