1

我的 xhtml,如果我把我的CommandButton放入不被调用:h:formActionlistener

<ui:composition template="/template.xhtml">
    <style>

    </style>
    <ui:define name="title">
        <h:outputText value="#{bundle.ListDashboardTitle}"></h:outputText>
    </ui:define>
    <ui:define name="body">
        <h:form id="formDashboard">
            <p:layout id="layoutVar" style="min-height:500px;">
                <p:layoutUnit id="gridLeft" position="west" size="250" style="position:absolute;">
                    <p:fieldset style="padding:0;padding-top:5px">
                        <f:facet name="legend" id="legendId">
                            <p:commandButton id="addEvent" type="button" icon="ui-icon-plus" value=""  onclick="addMemo.show()" update=":formAddMemo" style="width:30px;height:30px;"/>
                        </f:facet>
                        <p:dataGrid id="leftData" var="item" columns="1" value="#{myMemosController.items}" style="border:none;">
                            <p:panel id="pnl" styleClass="" style="background-color:#{item.priority}}" closable="true">
<!--                                <p:ajax event="close" listener=""/>-->
                                <f:facet name="header">
                                    <h:panelGroup>
                                        <h:outputText value="#{item.name}" styleClass=""/>
                                        <p:commandButton icon="ui-icon-pencil" actionListener="#{myMemosController.prepareEdit}" update=":editForm" onclick="editMemo.show();" style="width:19px;height:19px;"/>
                                    </h:panelGroup>
                                </f:facet>
                                <f:facet name="footer">
                                    <h:outputText value="#{item.date} at #{item.time}" styleClass="footerStyle"/>
                                </f:facet>
                                <h:panelGrid columns="1" style="width:100%">  
                                    <h:outputText value="#{item.comments}" styleClass=""/>
                                </h:panelGrid>
                            </p:panel>
                            <p:draggable for="pnl" helper="clone" handle=".ui-panel-titlebar" stack=".ui-panel" zindex="100"/>
                        </p:dataGrid>
                    </p:fieldset>
                </p:layoutUnit>

                <p:layoutUnit position="center" style="position:absolute;">
                    <p:outputPanel id="dropArea">
                        <p:dataTable id="centerGrid" value="#{dashboardController.items}" var="item">
                            <p:column style="text-align:center;">
                                <f:facet name="header">
                                    <h:outputText value="Priority"/>
                                </f:facet>
                                <h:outputText value="#{item.priorityname}"/>
                            </p:column>
                            <p:column style="text-align:center;">
                                <f:facet name="header">
                                    <h:outputText value="Name"/>
                                </f:facet>
                                <h:outputText value="#{item.name}"/>
                            </p:column>
                            <p:column style="text-align:center;">
                                <f:facet name="header">
                                    <h:outputText value="Comment"/>
                                </f:facet>
                                <h:outputText value="#{item.comments}"/>
                            </p:column>
                            <p:column style="text-align:center;">
                                <f:facet name="header">
                                    <h:outputText value="Time"/>
                                </f:facet>
                                <h:outputText value="#{item.time}"/>
                            </p:column>
                            <p:column style="text-align:center;">
                                <f:facet name="header">
                                    <h:outputText value="Date"/>
                                </f:facet>
                                <h:outputText value="#{item.date}"/>
                            </p:column>
                        </p:dataTable>
                    </p:outputPanel>
                    <p:droppable id="droppablePanel" tolerance="touch" activeStyleClass="ui-state-highlight">  

                    </p:droppable>
                </p:layoutUnit>

                <p:layoutUnit id="gridRight" position="east" size="250" style="position:absolute;">
                    <p:dataGrid id="rightGrid" var="item" columns="1" value="#{usersMemosController.items}">
                        <p:panel id="pnl" styleClass="" style="background-color:#{item.priority}}" closable="true">

                            <f:facet name="header">
                                <h:outputText value="#{item.name}" styleClass=""/>
                            </f:facet>
                            <f:facet name="footer">
                                <h:outputText value="#{item.date} at #{item.time}" styleClass="footerStyle"/>
                            </f:facet>
                            <h:panelGrid columns="1" style="width:100%">  
                                <h:outputText value="#{item.comments}" styleClass=""/>
                            </h:panelGrid>
                        </p:panel>
                        <p:draggable for="pnl" helper="clone" handle=".ui-panel-titlebar" stack=".ui-panel" zindex="100"/>
                    </p:dataGrid>
                </p:layoutUnit>
            </p:layout>
        </h:form>

        <p:dialog id="dialogEditMemo" header="Edit Memo" widgetVar="editMemo" resizable="false" closable="true" closeOnEscape="true" draggable="false">
            <h:form id="editForm">
                <h:messages style="color:red;margin:8px;" />

                <h:panelGrid columns="1" cellpadding="3">
                    <p:inputTextarea id="commentEditInput" value="#{myMemosController.currentComment}" rows="6" required="true">
                        <p:ajax event="keyup" />
                        <p:ajax event="change" />
                    </p:inputTextarea>
                    <p:watermark for="commentEditInput" value="Enter your memo..."/>

                    <h:panelGrid columns="2" cellpadding="1">
                        <h:outputLabel for="selectEditShare" value="Share Memo: " style="margin-right:40px;"/>  
                        <p:selectBooleanCheckbox id="selectEditShare" label="selectEditShare"/> 
                    </h:panelGrid>

                    <p:selectOneMenu id="chooseEditPriority" value="#{myMemosController.currentPriority}">  
                        <f:selectItem itemLabel="Low Priority" itemValue="Low Priority" />  
                        <f:selectItem itemLabel="Medium Priority" itemValue="Medium Priority" />  
                        <f:selectItem itemLabel="High Priority" itemValue="High Priority" />  
                    </p:selectOneMenu>
                </h:panelGrid>
            </h:form>
            <p:panel id="panelEditBtn" style="border:none;">
                <p:commandButton icon="ui-icon-close" value="Reset" type="reset"/>
                <p:commandButton icon="ui-icon-check" actionListener="#{myMemosController.update}" value="Edit" process="@this" update=":formDashboard:leftData" onsuccess="editMemo.hide();"/>
            </p:panel>
        </p:dialog>
    </ui:define>
</ui:composition>

当我想显示InputTextarea值等于null时:

public String update() {
  System.out.println(getCurrentComment());
}

提前致谢

4

2 回答 2

1

问题出在 managedBean 中,您没有实例化对象 currentComment 。请尽量避免在您的应用程序中使用嵌套形式。

于 2013-10-09T14:20:02.657 回答
0

我遇到了同样的问题,问题是有时值没有通过 ajax 设置为 managedBean。所以<p:inputTextArea />用下面的代码修改你的工作。

<p:inputTextarea id="commentEditInput"
  value="#{myMemosController.currentComment}"rows="6" required="true">
   <p:ajax event="keyup" />
   <p:ajax event="change" />
</p:inputTextarea>

而对于您的 actionListener,只需尝试使用可能有效的流程属性..

<p:commandButton id="submitEditDialog" icon="ui-icon-check" 
  actionListener="#{myMemosController.update}" value="Edit"
  update=":formDashboard:leftData :editForm" onsuccess="editMemo.hide();"
  process="@this"
/>
于 2013-10-09T07:33:15.877 回答