无法在javascript中获取java变量值以传递给jsp中的java方法

时间:2013-12-30 06:21:17

标签: java javascript jsp jsp-tags

我是JSP的新手,我试图将javascript值传递给jsp方法。

在下面的循环中,我从java类中获取列表,并使用jsp中的下拉列表中的选定值循环,即yearVal,并且该值等于分配给java变量。在 for 循环中,它显示String变量的正确值,但在 for 循环之外,它显示列表中的最后一个值。我需要获得正确的值,以便我可以将String变量传递给方法。

<% String valYear=""; %>

<%for(int k=0;k<lists.getYearList().size();k++){%>
    if(yearVal==<%= lists.getYearList().get(k)%>){
        <%valYear = lists.getYearList().get(k);%>
        alert('inside scriptlet:::'+<%=valYear%>); 
    }
<%}%>
    alert('outside scriptlet year val:::'+<%=valYear%>);

在java中,arraylist如下:

public List<String> yearList = new ArrayList<String>();

    public List<String> getYearList() {
        if(yearList.isEmpty()){
        yearList.add("2012");
        yearList.add("2013");
        yearList.add("2014");
        yearList.add("2015");
        yearList.add("2018");
        }
        return yearList;
    }

    public void setYearList(List<String> yearList) {
        this.yearList = yearList;
    }

最后一个值2018被分配给jsp中的java变量,而不是在if循环中赋值变量whicvh。

我尝试如下:

例如:

if(month != '11'){
        alert('if::'+month);
        <%abc = true;%>
    }else{
        alert('else::'+month);
        <%abc = false;%>    
    }

虽然如果是条件进入内部,但不是将abc设置为true,而是将其设置为false

2 个答案:

答案 0 :(得分:0)

您的javascript值在每次迭代中都会覆盖。

你必须添加条件,

if(conditionForCorrectValue){
 var js = <%=valYear%>;
}

作为旁注:How to avoid Java code in JSP files?

答案 1 :(得分:0)

使用 JSTL

<强> How to use for loop in jstl?

if(yourTrueCondition)
{
  var Year = <%= valYear %>;
  alert(Year);
}