如何在struts中访问jsp标签? 例如:
<s:select name="country" list="<%=countryList%>" headerKey="0" headerValue="Country"
label="Select your country" required="true"/>
例外:
消息:/jsp/index.jsp(35,2)根据TLD或属性 标签文件中的指令,属性列表不接受任何表达式。 countryList是一个ArrayList。
答案 0 :(得分:2)
因为S2标签不允许在其中使用此表达式,所以异常清楚地表明原因。 更多Tag需要List / ArrayList或任何集合列表作为数据源,并且在ONGL机制中构建将为您完成剩余的工作。
你有一个干净的方法来实现这个在你的动作类中创建一个名为countryList
的属性,该属性应该具有List / Map的数据类型,并为这个属性提供一个getter和setter。用所需的List填充List动作类中的数据。
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中执行以下操作
<s:select name="country" list="countryList" headerKey="0" headerValue="Country"
label="Select your country" required="true"/>
因此,当OGNL将此list="countryList"
作为数据源时,它将在您的操作类中查找名为getCountryList()的方法,并将使用该数据填充select标记。
希望这能让你明白这是如何运作的。有关详细信息,请参阅官方文档
答案 1 :(得分:1)
您不需要为列表使用java scriptlet。
您必须使用OGNL表达式。如果您的操作具有getCountryList方法,那么您需要做的就是:
<s:select name="country" list="countryList" headerKey="0" headerValue="Country"
label="Select your country" required="true"/>
您应该搜索一些有关如何在struts中使用OGNL的文档。它非常强大。