Struts2 - 使用jquery ajax从数据库加载信息

时间:2013-09-17 09:28:44

标签: ajax hibernate jquery struts2

用于开发我的webApp我使用struts 2 hibernate 3我希望在更改<s:select/>标记中的值时运行查询,并在隐藏的输入中传递此查询的结果 并且我想在更改选择标记的元素时保持在同一页面

我的页面jsp就像这个例子一样:

<form  name="evalform" action="saveOrUpdateSousEval"    method="post"  >    
<s:iterator begin="1" end="4" status="status">
        <s:hidden   name="SousEval_Note"   
                value="99" 
                placeholder="entrer  Note"
                      />
        <s:select 
            headerValue="---------------- Select ---------------"
            headerKey="-1" 
            list="SousItemsListGrille"
            listKey="SousItem_ID"   
            listValue="SousItem_Libelle"
            name="sousEvalItem.SousItem_ID"  
            cssClass="selectedId"

            />

</s:iterator>   
</form> 

这里我首先要获取所选元素的id:

    <script type="text/javascript">
        $("#idselectdiv .selectedId").change(function () {
        var idd = $(this).val(); 
//each element selected in each select tag  has an id and i want excute query of this id  
        alert(" id selected "+idd);
        $.ajax({
        //somthing here !!
    });
    });
    </script>

在struts中。 xmli定义了这个动作:

<action name="ponderation" method="getItembyPonderation"        class="action.classAction">
    <result name="success"    >/oki.jsp</result>
 </action>

在我的课程中我有这个方法:

public Double getItembyPonderation(){
System.out.print("enter getItembyPonderation ok");
Double b = null;
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
List<Double> a=selectponder.selectponderation(Long.parseLong(request.getParameter("SousItem_ID")));
        while (a != null) {
        return  b=a.get(0);
        }
return b;
}

在我的课堂上:

public List<Double> selectponderation(Long idsousitem){
    List<Double> valponderation = null;
    try {
    valponderation = session.createQuery("SELECT a.ponderation FROM items a, sousitems b WHERE a.Item_ID = b.Item_ID and b.SousItem_ID="+idsousitem).list();                                                                    ;
} catch (Exception e) {e.printStackTrace();}
return valponderation;
}

这里我需要做到这一点的想法

1 个答案:

答案 0 :(得分:0)

 <script type="text/javascript">
        $("#idselectdiv .selectedId").change(function () {
        var idd = $(this).val(); 
//each element selected in each select tag  has an id and i want excute query of this id  
        alert(" id selected "+idd);
$.ajax({
        url : 'your_action name_where_you_execute_query',
        data:{
            idd:idd
        },
        type : 'GET',
        dataType : 'as_you_want_from_your_action'

    });
 });
    </script>

以上是如何调用操作并将参数传递给该操作的示例。 你明白了吗?