我有一个下拉列表:
<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并在我的下拉列表中使用它作为背景颜色?现在它不起作用。有什么想法吗?
答案 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);
}
}