2011-06-10 3 views
0

j'ai un menu déroulant dans une page jsp ayant le code suivantpeuplant une table basée sur des valeurs choisies dans une liste déroulante dans l'application struts2

<s:select name="newQuestion.CertificationId" 
    list="certificationList" 
    listKey="certificationId" 
    listValue="certificationName" 
    headerKey="" 
    headerValue="Select Certification" 
    label="Certification Name" 
    onchange="getQuestionsList(this.value)" /> 

Maintenant sur l'événement de changement de la liste déroulante est d'appeler un JS function getQuestionsList() qui a l'intention de récupérer la liste de questions de l'Id de certification choisi.

Dans la fonction JS je soumets à une classe d'action où je fais un appel DB pour aller chercher la liste des questions en fonction des valeurs de certification Id

function getQuestionDetails(value){ 
    var submiturl = "Action1.action?certId="+value; 

$.ajax({ 
    url:submiturl, 
    type: 'get', 
    beforeSend: function(){ 
     $("#loading").show(); 
     alert("parsed"); 
    }, 
    success: function(result){ 
     if(result!=''){ 

     } else { 
      alert(result); 
     } 
    }, 
    }); 
} 

maintenant dans la classe d'action que je suis en train de la valeur de QuestionsListe avec les valeurs que je rapportez de base de données .questionList est une variable d'instance dans la classe d'action avec getter et setter methods.Now dans struts.xml Je passe au même jsp où j'ai eu le menu déroulant

<action name="questionAction" class="questionInfo.QuestionManager" 
      method="displaySelectedQuestions"> 
    <result name="loaded">/questionAdmin.jsp</result> 
</action> 

le problème Je rencontre est quand je retourne à la JSP I je ne suis pas en mesure de récupérer la liste des questions que j'afficher dans un itérateur

<table class="registrationDetailsTable"> 
    <tr class="tabledataheader"> 
     <td>Question Id</td> 
     <td>Question Description</td> 
    </tr> 
    <s:iterator value="questionList"> 
     <tr class="tabledatarow"> 
      <td><s:property value="questionId" /></td> 
      <td><s:property value="questionDesc" /></td>   
     </tr> 
    </s:iterator> 
</table> 

S'il vous plaît laissez-moi savoir où je me fais mal pour que j'ai la liste des questions de population dans ma jsp

Répondre

1

Lorsque vous appelez votre action Avec $.ajax(...), l'action crée la réponse en redirigeant vers la vue (questionAdmin.jsp), non? Et cette réponse devrait être disponible dans le gestionnaire de valeur de retour de cet appel Ajax.

Alors, quand vous avez ceci:

success: function(result){ 
     if(result!=''){ 
      // nothing here currently! 
     } else { 
      alert(result); 
     } 
    } 

Vous devriez faire quelque chose avec le code HTML résultant. Vous pouvez commencer par faire alert(result) pour voir ce que vous obtenez et ensuite afficher le nouveau contenu de la liste en utilisant Javascript. Je le ferais pour que vous ayez un div contenant votre table comme ceci:

<div id="myTableWrapper"> <!-- I added this div --> 
    <!-- This part should come from the action when called by Ajax --> 
    <table class="registrationDetailsTable"> 
     <tr class="tabledataheader"> 
      <td>Question Id</td> 
      <td>Question Description</td> 
     </tr> 
     <tr class="tabledatarow"> 
      <td>1</td> 
      <td>My question #1</td>   
     </tr> 
     <tr class="tabledatarow"> 
      <td>2</td> 
      <td>My question #2</td>   
     </tr> 
    </table> 
    <!-- //This part should come from the action when called by Ajax --> 
</div> 

Alors maintenant, vous pouvez le faire:

success: function(result){ 
     if(result!=''){ 
      $('.myTableWrapper').html(result); 
     } else { 
      alert(result); 
     } 
    } 
+0

Lorsque j'imprime le résultat dans l'appel ajax fait ci-dessus, je reçois le code source de questionAdmin.jsp. – Sam

+0

Dans la classe d'action ci-dessus QuestionManager, je récupère la liste de questions de DB en utilisant la question Id passée dans l'url et la mets en utilisant une méthode setter de questionList qui est une instance varaible pour cette classe d'action – Sam

+0

@Sam le questionAdmin.jsp produisant la sortie correcte? Pouvez-vous mettre à jour le code HTML de votre table avec cette sortie? Je ne suis pas sûr de savoir comment aider, car je ne comprends pas ce que votre problème est en ce moment. Vous devriez être en mesure de: 1) Charger votre liste avec les valeurs initiales 2) Sélectionnez un identifiant, l'envoyer comme un appel Ajax à votre action et 3) afficher le résultat (= la liste modifiée) de cet appel sur votre page en utilisant Javascript. – deltaforce2

Questions connexes