首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Struts 2标记访问servlet应用程序上下文?

如何从Struts 2标记访问servlet应用程序上下文?
EN

Stack Overflow用户
提问于 2012-03-01 08:37:30
回答 2查看 1.1K关注 0票数 1

如何在struts中访问jsp标记?例如:

代码语言:javascript
运行
复制
<s:select name="country" list="<%=countryList%>"  headerKey="0" headerValue="Country"
                  label="Select your country" required="true"/>

例外:

消息: /jsp/index.jsp(35,2)根据TLD或标记文件中的属性指令,属性列表不接受任何表达式。countryList是ArrayList。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-01 09:03:04

异常很清楚地指明了原因,因为S2标记将不允许它内部的这个表达式。over标记需要一个List/ArrayList或任何集合列表作为数据源,并且构建在ONGL机制中将为您完成其余的工作。

您有一种干净的方法来实现这一点,使用名称countryList在操作类中创建一个属性,该属性的数据类型应该为List/Map,并为该property.Fill提供一个getter和setter --该列表包含操作类中所需的数据。

行动类

代码语言:javascript
运行
复制
public class MyAction extends ActionSupport{

  private List<String> countryList;
  // getter and setter for countryList

  public String execute() throws Exception{
   countryList=new ArrayList<String>();
   // Add values to list
   return SUCCESS;
 }
}

现在,在您的JSP中,您需要做的全部工作如下

代码语言:javascript
运行
复制
<s:select name="country" list="countryList"  headerKey="0" headerValue="Country"
                  label="Select your country" required="true"/>

因此,当OGNL将此list="countryList"作为数据源时,它将在操作类中查找名为getCountryList()的方法,并使用该数据填充select标记。

希望这能让你清楚地知道这是怎么回事。有关详情,请参阅正式文件

选择标签

票数 2
EN

Stack Overflow用户

发布于 2012-03-01 08:47:54

您不需要对列表使用java脚本。

您必须使用OGNL表达式。如果您的操作有一个getCountryList方法,那么您需要做的就是:

代码语言:javascript
运行
复制
<s:select name="country" list="countryList"  headerKey="0" headerValue="Country"
                  label="Select your country" required="true"/>

您应该搜索一些关于如何在struts中使用OGNL的文档。它真的很强大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9512980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档