2015-12-07 17 views
1

У меня есть сценарий, при нажатии на кнопку я открываю диалоговое окно jQuery, которое отображает форму jsp (struts) через ajax-вызов, как показано ниже. Эта форма имеет тег <sj:select>, который получает записи из списка объектов. Список заполняется правильно, но он не отображается в диалоговом окне, а не отображается на родительской странице jsp, откуда я открываю диалог. Вот мой родительский код JSP:<sj:select> не работает в диалоговом окне jQuery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> 

$("#mydialogpopup").click(function(){ 
    $.ajax({ 
     url : "popupAjax.action", 
     success : function(response) { 
      $("#form_add").html(response); 
     $("#form_add").dialog('open'); 
     } 
}); 
}); 
    $("#form_add").dialog({autoOpen: false, 
     modal: true, 
     width: 450, 
     height: 280 
    }); 

</script> 


><a href="#" id="mydialogpopup" class="isw-plus"></a> 

<div class="newdialog" id="form_add" style="display: block;" title="My Dialog"></div> 

Вот код моей страницы popup.jsp, которая визуализируется как успешный результат Ajax вызова:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="/struts-tags" prefix="s"%>  
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%> 

<html> 
<head> 
<sj:head/> 
<link href="jsp/css/stylesheets.css" rel="stylesheet" type="text/css" /> 
</head> 

    <s:form id="userForm" action="" method="post" > 

    <s:url id="remoteurl" action="listUser"/>       
          <sj:select 
          href="%{remoteurl}" 
          id="echo3" 
          cssStyle="width: 100%;" 
          name="echo" 
          list="userList" 
          listKey="id" 
          listValue="name" 
          autocomplete="true" 
          emptyOption="true" 
          headerKey="-1" 
          loadMinimumCount="2" 
          headerValue="Please Select a User" /> 

    <sj:submit targets="result" id="savedialog" value="Save" validate="true"/>&nbsp; &nbsp; <input type="button" id="closedialog" value="Cancel"/> 

    </s:form> 

ответ

0

Не загружайте библиотеку JQuery дважды на такой же страница. Первый раз, когда вы загрузите его с

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> 

второй раз при загрузке его с

<sj:head/> 

Кроме того, вы не должны использовать эти теги на отображаемой странице

<html> 
<head> 
<sj:head/> 
<link href="jsp/css/stylesheets.css" rel="stylesheet" type="text/css" /> 
</head> 

страницы, которые вы оказываете это не полная html-страница, а ее часть, и вы должны отображать только теги, которые подходят для тела родительского тега. Поскольку вы отображаете тег div, его позиция определяется стилем CSS и может выходить из диалогового окна. Убедитесь, что вы используете стиль position: relative.

+0

Спасибо за ваш ответ .. Я исправил код, и он все еще не работает. Проведя еще несколько исследований, я обнаружил, что это дефект в struts. Вот ссылка: https://code.google.com/p/struts2-jquery/issues/detail?id=1022 –