JSF viewParam未设置

时间:2015-10-05 12:27:40

标签: jsf

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.我的错在哪里?

1 个答案:

答案 0 :(得分:2)

ManagedBean是在调用setter之前构造的。因此,@ PostConstruct方法中的System.out.println(...)打印long类型为0的actionId的默认值。 然后在UPDATE_MODEL_VALUES阶段调用setter。您可以通过在setter方法中放入另一个System.out.println(...)来检查这一点,该方法应该打印正确的值。