Java 使用JSTL访问模型对象

Java 使用JSTL访问模型对象,java,ajax,spring,jstl,Java,Ajax,Spring,Jstl,我目前正在尝试使用AJAX,但在访问模型对象时遇到了问题 我的测试代码所做的是从下拉列表中获取所选对象的值,当按下按钮时,它将该值传递到AjaxTest(),该按钮将参数附加到模型,但我无法获取似乎输出模型对象的值-我想知道为什么会这样 参数肯定有一个值 <div id="result"></div> <script type="text/javascript"> var param = document.getElementById("blah"

我目前正在尝试使用AJAX,但在访问模型对象时遇到了问题

我的测试代码所做的是从下拉列表中获取所选对象的值,当按下按钮时,它将该值传递到
AjaxTest()
,该按钮将参数附加到模型,但我无法获取似乎输出模型对象的值-我想知道为什么会这样

参数肯定有一个值

<div id="result"></div>

<script type="text/javascript">

    var param = document.getElementById("blah").value;

    var loadUrl = "/ajax/" + param;  
    $("#button").click(function(){  

        $.post(loadUrl, function(data){
            alert("Data Loaded: " + data);
            $("#result").html("<p>Param: ${output}</p>"); 
        });
    });  
</script>


@RequestMapping(value = "/ajax/{param}", method = RequestMethod.POST)
public @ResponseBody String AjaxTest(@PathVariable String param, final ModelMap model){

    model.addAttribute("output", param);
    return param;
}

var param=document.getElementById(“blah”).value;
var loadUrl=“/ajax/”+param;
$(“#按钮”)。单击(函数(){
$.post(加载URL、函数(数据){
警报(“数据加载:”+数据);
$(“#结果”).html(“参数:${output}

”; }); }); @RequestMapping(value=“/ajax/{param}”,method=RequestMethod.POST) public@ResponseBody String AjaxTest(@PathVariable String param,final ModelMap model){ model.addAttribute(“输出”,参数); 返回参数; }
我认为您对客户端和服务器端的概念有些混淆。 java看起来是正确的,但是js正在尝试访问jstl表达式(${output})。当呈现页面时,jstl表达式将无法解析,而呈现页面的时间将在Ajax请求/响应发生之前

js需要使用变量“data”,这是java添加到模型中的数据。大概是这样的:

$("#result).html("<p>Param: " + data.output + "</p>");
$(“#result).html(参数:“+data.output+”

”);
这假设模型是json
希望这能有所帮助

我认为您对客户端和服务器端的概念有些混淆。 您的java看起来是正确的,但是您的js正在尝试访问jstl表达式(${output})。呈现页面时,jstl表达式将无法解析,而呈现页面的时间将在Ajax请求/响应发生之前

您的js需要使用变量“data”,它是您的java添加到模型中的数据

$("#result).html("<p>Param: " + data.output + "</p>");
$(“#result).html(参数:“+data.output+”

”);
这假设模型是json
希望这有助于

当页面第一次加载时,JSP代码将执行。此代码包含以下行:

$("#button").click(function(){  

    $.post(loadUrl, function(data){
        alert("Data Loaded: " + data);
        $("#result").html("<p>Param: ${output}</p>"); 
    });
});
$(“#按钮”)。单击(函数(){
$.post(加载URL、函数(数据){
警报(“数据加载:”+数据);
$(“#结果”).html(“参数:${output}

”; }); });
因此,JSP EL代码由容器解释,并且${output}被output属性的值替换。由于此属性为null,因此将生成以下HTML代码并发送到浏览器:

$("#button").click(function(){  

    $.post(loadUrl, function(data){
        alert("Data Loaded: " + data);
        $("#result").html("<p>Param: </p>"); 
    });
});
$(“#按钮”)。单击(函数(){
$.post(加载URL、函数(数据){
警报(“数据加载:”+数据);
$(“#结果”).html(“参数:

”); }); });
当您单击该按钮时,将执行上面的JavaScript代码。它向AJAX URL发送一个AJAX请求,当响应返回时,它执行回调函数:

alert("Data Loaded: " + data);
$("#result").html("<p>Param: </p>");
警报(“数据加载:+数据”);
$(“#结果”).html(“参数:

”);

因此,从服务器接收的数据显示在一个警报框中,然后由“result”标识的HTML元素的内容被替换为
参数:

当页面第一次加载时,JSP代码将执行。此代码包含以下行:

$("#button").click(function(){  

    $.post(loadUrl, function(data){
        alert("Data Loaded: " + data);
        $("#result").html("<p>Param: ${output}</p>"); 
    });
});
$(“#按钮”)。单击(函数(){
$.post(加载URL、函数(数据){
警报(“数据加载:”+数据);
$(“#结果”).html(“参数:${output}

”; }); });
因此,JSP EL代码由容器解释,并且${output}被output属性的值替换。由于此属性为null,因此将生成以下HTML代码并发送到浏览器:

$("#button").click(function(){  

    $.post(loadUrl, function(data){
        alert("Data Loaded: " + data);
        $("#result").html("<p>Param: </p>"); 
    });
});
$(“#按钮”)。单击(函数(){
$.post(加载URL、函数(数据){
警报(“数据加载:”+数据);
$(“#结果”).html(“参数:

”); }); });
当您单击该按钮时,将执行上面的JavaScript代码。它向AJAX URL发送一个AJAX请求,当响应返回时,它执行回调函数:

alert("Data Loaded: " + data);
$("#result").html("<p>Param: </p>");
警报(“数据加载:+数据”);
$(“#结果”).html(“参数:

”);
因此,从服务器接收的数据显示在警报框中,然后由“result”标识的HTML元素的内容被替换为
参数: