是否可以在java中定义变量并在jsp代码中使用它?

时间:2014-07-13 08:12:44

标签: java jsp jstl struts el

我有一个下拉列表:

<html:select styleId="colorCodeId" property="msSpec.colorcodeId" name="Form"  styleClass="form-control">
                            <option value="-1"></option>
                            <html:optionsCollection property="colorcodeList" style="background: <%=test1%>;"/>
                        </html:select>

在java代码中我有:

List<LabelValueBean> colorcodeList = new ArrayList<LabelValueBean>();
for (Mty property : customPropertyList) {
            LabelValueBean bean = new LabelValueBean(property.getName(), property.getId().toString());

if (property instanceof ColorCode) {
                test1 = property.getName();
                System.out.println("test1: " + test1);
                colorcodeList.add(bean);
            }
}

我是否有可能像上面那样定义test1并在我的下拉列表中使用它作为背景颜色?现在它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

JSP表达式语言不能使用在自定义Java代码中声明的Java变量。

&#34;变量&#34; JSP表达式语言可以访问的实际上是在四个&#34;范围之一中设置的属性&#34;由JSP / Servlet框架定义; ie&#34; session&#34;,&#34; request&#34;,&#34; page&#34;和&#34;申请&#34;。

您可以从Java获取并设置这些属性; e.g。

   // Request scope
   request.getAttribute("test1");  
   request.setAttribute("test1", someValue);

了解更多信息:


  

当我在我的java代码中提出请求时,它说请求无法解决。我应该导入一个库吗?

如果您的代码嵌入在JSP中,则应声明request

否则,将request替换为引用当前请求的HttpServletRequest对象的变量的名称。

答案 1 :(得分:0)

您可以使用JSP EL表达式而不是变量。原因是从代码中删除scriptlet。

<html:select styleId="colorCodeId" property="msSpec.colorcodeId" name="Form"  styleClass="form-control" style="${test1}">
                            <option value="-1"></option>
                            <html:optionsCollection property="colorcodeList" />
                        </html:select> 

在你写的行动中

List<LabelValueBean> colorcodeList = new ArrayList<LabelValueBean>();
for (Mty property : customPropertyList) {
            LabelValueBean bean = new LabelValueBean(property.getName(), property.getId().toString());

if (property instanceof ColorCode) {
                test1 = property.getName();
                System.out.println("test1: " + test1);
                request.setAttribute("test1", "background: "+test1+";");
                colorcodeList.add(bean);
            }

}