xhtml文件我使用viewParam:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<f:metadata>
<f:viewParam name="actionId" value="#{editActionView.actionId}" required="true" />
</f:metadata>
<h:body>
支持bean如下所示:
EditActionView.java
@ManagedBean
@ViewScoped
public class EditActionView {
private long actionId;
@PostConstruct
void init() {
System.out.println("actionId: " + getActionId());
}
public long getActionId() {
return actionId;
}
public void setActionId(long actionId) {
this.actionId = actionId;
}
当我现在打电话给我的申请时:
http://localhost:8080/aip/editAction.jsf?actionId=37
actionId始终为0.我的错在哪里?
答案 0 :(得分:2)
ManagedBean是在调用setter之前构造的。因此,@ PostConstruct方法中的System.out.println(...)打印long类型为0的actionId的默认值。 然后在UPDATE_MODEL_VALUES阶段调用setter。您可以通过在setter方法中放入另一个System.out.println(...)来检查这一点,该方法应该打印正确的值。