当我在<h:outputText>中使用<p:panelGrid>时,getter属性,getStartDate()getEndDate()不起作用。但是,当我从页面中删除<p:panelGrid>时,getter属性运行良好。还有一件事,当我单击Go To Next Week链接时,在endDate操作方法中得到的nextWeek()值为空。我不为什么,即使我将DatePick用作Conversation Scope

mypage.xhtml

<table>
    <tr>
        <td>
            <p:commandLink action="#{DatePick.nextWeek()}" immediate="true" value="Go To Next Week" />
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <p:panelGrid style="margin-top:-1px;" id="datePanel">
                    <h:outputText value="#{DatePick.startDate}" style="color:#333333;font-size:15px;">
                        <f:convertDateTime pattern="yyyy-MM-dd"/>
                    </h:outputText>
                    -
                    <h:outputText value="#{DatePick.endDate}" style="color:#333333;font-size:15px;">
                        <f:convertDateTime pattern="yyyy-MM-dd"/>
                    </h:outputText>
            </p:panelGrid>
        </td>
    </tr>
</table>


DatePick.java

@Name("DatePick")
@Scope(ScopeType.CONVERSATION)
public class DatePick {
    private Date startDate;
    private Date endDate;
    private boolean initFlag = true;

    public void init() {
        System.out.println("init().....");
        initFlag = false;
        startDate = new Date();
    }

    public boolean getInitFlag() {
        System.out.println("getInitFlag() : " + initFlag);
        return initFlag;
    }

    public Date getEndDate() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(startDate);
        cal.add(Calendar.DATE, 7);
        endDate =  cal.getTime();
        System.out.println("getEndDate() : " + endDate);
        return endDate;
    }

    public Date getStartDate() {
        System.out.println("getStartDate() : " + startDate);
        return startDate;
    }

    public void nextWeek() {
        System.out.println("nextWeek() : " + endDate);
        startDate = endDate;
    }
}

最佳答案

您需要指定columns属性。否则,它默认为0列,您需要显式使用<p:row><p:column>。另请参见the <p:panelGrid> showcase

您的具体功能要求尚不清楚,但是也许您想实现这种1列布局?

<p:panelGrid columns="1">
    <h:outputText ... />
    <h:outputText ... />
</p:panelGrid>


或者,也许您只想将它​​们显示在彼此下方?整个内容已经在普通的HTML <table>内部,并且使用<p:panelGrid>在视觉上几乎没有意义。只需使用<br>然后。

<h:outputText ... />
<br />
<h:outputText ... />

关于java - 在<p:panelGrid>中的<h:outputText>不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12770112/

10-14 10:21