JSF h:commandLink动作属性不调用方法,而是重新加载页面

时间:2014-05-08 09:53:07

标签: java jsf-2 methods xhtml

我有一个名为删除的方法。它存在于h:dataTable的所有行中。 dataTable条目是从数据库中提取的。

dataTable的代码以及页面的其余部分是:

  <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                 xmlns:h="http://xmlns.jcp.org/jsf/html"
                 xmlns:f="http://xmlns.jcp.org/jsf/core"
                 xmlns:ui="http://java.sun.com/jsf/facelets"
                 template="/webpages/templates/MainTemplate.xhtml">

 <ui:define name="infomationPartOfBody">
     <h:form>
      <div class="infoContent">

          <div id="title">
              Employee's Schedule
              </div><br/>
          <div>Being the <b>administrator</b>, you can keep track of the work distribution amongst the employees of the organization.
          Just select the employee ID from the drop-down list to view the details.</div><br/><br/><br/>

        <div><table border="0" cellspacing="4" cellpadding="8">


                <tr>
                    <td> <b><h:outputLabel value="Select Employee ID"/></b> </td>
                    <td>   

                        <h:selectOneMenu value="#{empDutySchedBean.empID}">

                             <f:selectItems value="#{dropDownBean.dropItems}" />
                           </h:selectOneMenu>


                    </td>


                    <td> <h:commandButton class="button" id="allocateButton" value="View the Schedule" style="width: 100%" action="#{empDutySchedBean.viewEmpTask}"/>   </td> 
                </tr>

            </table>  </div> <br/><br/>

            <div class="empDutyInfo"> <table border="0" cellspacing="4" cellpadding="8"  >
                <tr>
                    <td> <h:outputLabel
                         style="font-size: 20px;
                        color:#000000; border-bottom-style: groove;
                          text-shadow: 2px 2px 10px #95D0CA; "    
                            rendered="#{empDutySchedBean.show}" value="Employee Name: "/>  </td>
                    <td> <h:outputText class="items"

                            rendered="#{empDutySchedBean.show}" value="#{empDutySchedBean.fullName}" /></td>

                </tr>

                <tr>
                    <td> <h:outputLabel
                         style="font-size: 20px;
                        color:#000000; border-bottom-style: groove;
                          text-shadow: 2px 2px 10px #95D0CA; "    
                            rendered="#{empDutySchedBean.show}" value="Employee ID: "/>  </td>
                    <td> <h:outputText
                            class="items"
                            rendered="#{empDutySchedBean.show}" value="#{empDutySchedBean.partOf}"/></td>
                </tr>

                <tr>
                    <td> <h:outputLabel
                          style="font-size: 20px;
                        color:#000000; border-bottom-style: groove;
                          text-shadow: 2px 2px 10px #95D0CA; "   

                            rendered="#{empDutySchedBean.show}" value="Designation: "/>    </td>
                    <td> <h:outputText
                            class="items"
                            rendered="#{empDutySchedBean.show}" value="# {empDutySchedBean.designation}"/></td>
                </tr>

                <tr>
                    <td> <h:outputLabel
                         style="font-size: 20px;
                        color:#000000; border-bottom-style: groove;
                          text-shadow: 2px 2px 10px #95D0CA; "    
                            rendered="#{empDutySchedBean.show}" value="Gender: "/>    </td>
                    <td> <h:outputText
                            class="items"
                            rendered="#{empDutySchedBean.show}" value="#{empDutySchedBean.gender}"/></td>
                </tr>

            </table>




            <h:dataTable value="#{empDutySchedBean.empDuty}" var="u" border="1" rendered="#{empDutySchedBean.show}" cellspacing="5" cellpadding="10"

        styleClass="infoTable" headerClass="dataTableHeader" rowClasses="dataTableRow" >



            <h:column>
                <f:facet name="header">
                    Task Allocated
                </f:facet>   
                #{u.subTaskID}
            </h:column>

                <h:column>
                <f:facet name="header">
                    Task Description
                </f:facet>   
                #{u.taskDescription}
            </h:column>

            <h:column>
                <f:facet name="header">
                    From 
                </f:facet>   
                #{u.fromDate}
            </h:column>

            <h:column>
                <f:facet name="header">
                    To 
                </f:facet>   
                #{u.toDate}
            </h:column>

            <h:column>
              <f:facet name="header">

              </f:facet>   
                <h:commandButton class="button" value="Remove Task" action="#{removeTaskBean.abc}"/>
           </h:column>


        </h:dataTable></div><br/> <br/></div>
       </h:form>
    </ui:define>
</ui:composition>

我想要做的是,当针对特定行单击删除时,该行将从数据库中删除,并且页面将使用更新的表重新加载。

我不确定删除按钮的操作属性是否已正确定义。我已经尝试将参数传递给方法:action="#{removeTaskBean.taskRemove(u.subTaskID, empDutySchedBean.partOf)}

empDutySchedBean.partOf取自

  <tr>
          <td> <h:outputLabel style="font-size: 20px;  color:#000000; border-bottom-style: groove;text-shadow: 2px 2px 10px #95D0CA; " rendered="#{empDutySchedBean.show}" value="Employee ID: "/>  </td>
           <td> <h:outputText class="items"rendered="#{empDutySchedBean.show}" value="#{empDutySchedBean.partOf}"/></td>
  </tr>

如果要查看图像,您将看到从另一个bean中的另一个方法检索到{empDutySchedBean.partOf}

删除按钮调用的方法是:

public void taskRemove(String id, String tID) throws Exception
{
    System.out.println("in Bean: taskRemove() invoked");
    setTheempID(id);
    System.out.println("in RemoveTaskBean, the emp ID is  "+getTheempID());
    setTheTaskID(tID);
    System.out.println("subtask ID"+ getTheTaskID());
    setNoRowEffect(ts.removeEmpTask(getTheempID(), getTheTaskID()));
    System.out.println("in Bean: no of rows affected   "+getNoRowEffect());
 }

我如何知道该方法是否未被调用?那是因为print语句System.out.println("in Bean: taskRemove() invoked");不会在netBeans的输出控制台上打印。

我不确定我是否正在尝试提取id并且tID是否正确。我认为它无法知道我想要提取哪个tID,因为表中有somany。

修改 我已经意识到tomcat服务器默认不支持参数传递。所以我了解到我需要将 el-impl-2.2.jar 添加到我的库中。我已经补充说,现在该方法调用。但是当我打印netbeans输出上传递的参数时,它不会打印任何内容。现在问题已经发生了一些变化。它已成为别的东西。

0 个答案:

没有答案