2013-02-16 66 views
1

我有一個struts2 liferay portlet,它工作正常,直到它在一個列布局頁面中。 在view.jsp的(portlet的第一頁。)是否有一個撐杆形式映射到goToPrivilege動作liferay多列布局上的struts2 portlet顯示損壞

<s:form id="privilegeForm" action="goToPrivilege" namespace="/view"> 

在我使用goToPrivilege重定向到privilegeAction

<action name="goToPrivilege" class="defaultAdmin" method="goToPrivilege"> 
     <result type="redirectAction"> 
      <param name="actionName">privilegeAction</param> 
      <param name="needAssessmentId">${needAssessmentId}</param> 
     </result> 
</action> 
    <action name="privilegeAction" class="privilegeAction"> 
     <result>/html/needAssessmentAdmin/privilege.jsp</result> 
     <result name="error">/html/needAssessmentAdmin/error.jsp</result> 
    </action> 

結果是struts.xml中:用戶重定向到privilege.jsp頁面。它工作正常onecolumn佈局,但,當我把這個portlet在一個頁面有兩個欄佈局和用戶提交表單的privilege.jsp顯示在頁面的BUTTOM內容,portlet的區域外: enter image description here 我怎麼能解決這個問題問題和我的portlet就像一個portlet一樣工作(在門戶中的任何地方使用)。

更多的信息,我使用的Liferay 5.2.3 Struts2的春季

編輯: 在view.jsp的我也沒什麼特別的。這只是一種形式。在privilege.jsp我有一些無形的div(充當jQuery的彈出式),那麼與它的jQuery網格負載表

 ... 
<portlet:resourceURL var="privilegeurl" > 
    <portlet:param name="struts.portlet.action" 
     value="/grid/privilegeGrid" /> 
</portlet:resourceURL> 
<portlet:resourceURL var="privilegeediturl"> 
    <portlet:param name="struts.portlet.action" 
     value="/grid/privilegeEdit"/> 
</portlet:resourceURL> 
... 

     <!-- Add Dialog --> 
    <div id="adddialog" title='<%= res.getString("needAssessment.add")%>'> 
     <s:form id="addPrivilegeForm"> 
      <s:hidden id="needAssessmentId" name="needAssessmentId"/> 
      <table> 
... 
      </table> 
      <s:submit onclick="closeAddDialog();" key="submit" id="submitaddPrivilege" /> 
     </s:form> 
    </div> 
    <script type="text/javascript"> 
... 
j.query('#addPrivilegeForm').submit(function(event){ 
    // fire off the request to actionEditUrl 
    j.query.ajax({ 
     url: "<%=privilegeediturl%>", 
     type: "post", 
     data: { 
      'needAssessmentId':j.query('#needAssessmentId').val(), 
      'roleId': j.query('#addRoleId').val(), 
      'startDuration': j.query('#addStartDuration').val(), 
      'endDuration': j.query('#addEndDuration').val() 
     }, 
     // callback handler that will be called on success 
     success: function(response, textStatus, jqXHR){ 
      j.query('#privilegeGrid').trigger('reloadGrid'); 
     }, 
     // callback handler that will be called on error 
     error: function(jqXHR, textStatus, errorThrown){ 
      // log the error to the console 
      alert(
       "The following error occured: "+ 
       textStatus, errorThrown 
      ); 
     } 
    }); 
    // prevent default posting of form 
    event.preventDefault(); 
}); 
</script> 


    <!-- Back Button --> 

    <%if(!isPersian){ %> 
    <div style="text-align :right;direction: rtl"> 
    <%}else { %> 
    <div style="text-align: left; direction: ltr"> 
    <%} %> 
    <button onclick="goBack();" id="backButton"><%=res.getString("back")%></button> 
    <s:form id="backForm" cssStyle="display:none" action="defaultAdminView" namespace="/view"> 
    </s:form> 

    </div> 
    <script type="text/javascript"> 
    function goBack(){ 
     document.forms["backForm"].submit(); 
    } 
    j.query('#backButton').button(); 
    </script> 

    <%if(isPersian){ %> 
    <div style="text-align :right;direction: rtl "> 
    <%}else { %> 
    <div style="text-align: left;direction: ltr"> 
    <%} %> 
    <button id="addPrivilegeButton"><%=res.getString("needAssessment.add") %></button> 
    </div> 

    <script type="text/javascript"> 
    j.query('#addPrivilegeButton').button().click(function(event){ 
     addPrivilege(); 
     return false; 
    }); 

    </script> 
    <br/> 

    <!-- Privilege grid --> 
    <table id="privilegeGrid" style="width: 100%"></table> 
    <div id="pager2"></div> 

,我通過AJAX加載該網格

j.query("#privilegeGrid").jqGrid({ 
     url:'<%=privilegeurl.toString()%>&' + '&needAssessmentId=' + needId , 
     datatype : "json", 
     colNames : [ 
        ... 
        ], 
     colModel : [ 
        ... 
        ], 
     rowNum : 10, 
     rowList : [ 10, 20, 30 ], 
     pager : '#pager2', 
     sortname : 'id', 
     viewrecords : true, 
     jsonReader : { 
      repeatitems : false, 
      id : "0" 
     }, 
     height : '100%', 
     width : 900, 
     caption : '<%=res.getString("privileges")%>', 
     ... 

    }); 

j.query("#privilegeGrid").jqGrid('navGrid', '#pager2', {edit : false,add : false,del : false}); 
+0

顯示你的JSP爲好。 – 2013-02-16 10:20:07

回答

1

你有畸形HTML。默認情況下,Struts2的使用xhtml主題,這意味着,除其他事項外,<s:form>標籤會生成表爲您服務。而你是把由<s:form>標籤產生的另一個<table>標籤內表。

+0

我加入主題=「簡單」到標籤糾正問題 – Hekmatof 2013-02-19 07:22:52