Struts中<html:select>如何使用 100
现在在某个JSP中的request中有一个用户列表(userlist)请问我如何使用Struts中的<html:select>标签把他显示出来。标签显示用户名,值为用户的...
现在在某个JSP中的request中有一个用户列表(userlist)
请问我如何使用Struts中的<html:select>标签把他显示出来。标签显示用户名,值为用户的ID。这个用户是一个实体类,并没有相应的FormBean。我自己测试时老是提示如下错误:
javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean under name org.apache.struts.taglib.html.BEAN 展开
请问我如何使用Struts中的<html:select>标签把他显示出来。标签显示用户名,值为用户的ID。这个用户是一个实体类,并没有相应的FormBean。我自己测试时老是提示如下错误:
javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean under name org.apache.struts.taglib.html.BEAN 展开
3个回答
展开全部
说明一下,我的环境是xp的系统,myeclipse5.1的.然后就创建一个web工程.在web-inf目录下的lib目录中添加jar包,commons-logging-1.0.4,freemarker-2.3.8,ognl-2.6.11,struts2-core-2.0.11.1,xwork-2.0.4等,这些包是什么作用,我也不太清楚,我刚接触太不到一天,这个web.xml文件中配置的好象是一个过滤器.然后把web.xml文件内容配置成如下: <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<!-- <init-param></init-param>-->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>
</web-app>
然后创建action类,在struts2中不需要actionform类,并且struts2中的action也不需要继承一个特定的action类,但一般情况他都会继承这个类com.opensymphony.xwork2.ActionSupport,然后重写他的execute()方法,该方法返回一个字符串,学过jsf的朋友应该知道的,这和jsf有点相似,刚才说他不需要actionform,其实现在的action中定义属性即可,然后给他们getter和setter方法,LoginAction代码如下: package com.struts2;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport ...{
/** *//**
*
*/
private static final long serialVersionUID = 1L;
private String userName;
private String userPass;
public String getUserName() ...{
return userName;
}
public void setUserName(String userName) ...{
// org.apache.struts2.dispatcher.FilterDispatcher
this.userName = userName;
}
public String getUserPass() ...{
return userPass;
}
public void setUserPass(String userPass) ...{
this.userPass = userPass;
}
@Override
public String execute() throws Exception ...{
// TODO Auto-generated method stub
if ("zhangsan".equals(userName) && "lisi".equals(userPass)) ...{
ActionContext.getContext().getSession().put("user", getUserName());
return SUCCESS;
} else ...{
return INPUT;
}
}
}
接着就来配置这个action,这个文件的名字叫做struts.xml有点象struts1中的struts-config.xml文件.他的存放路径我现在只知道可以放在classes下,也就是src目录下,action中配置了action路径,struts.xml代码如下: <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- <constant name="struts.enable.DynamicMethodInvocation"-->
<!-- value="false" />-->
<!-- <constant name="struts.devMode" value="false" />-->
<package name="struts2" extends="struts-default">
<action name="loginAction" class="com.struts2.LoginAction">
<result name="input">/login.jsp</result>
<result name="success">/suc.jsp</result>
</action>
<!-- <action name="....." class="....." method=".....">-->
<!--其中name可以随便起,这是以后自己要用到的,class就是类的全名,刚才说action不需要继承某个类,
也就是说他可以不遵循某中规范,可以在自定义的action中自定义处理方法-->
<!-- <result>........</result> 相当与actionforward-->
<!-- </action>-->
</package>
</struts>
编写jsp文件,很简单如代码: <%...@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%...@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<s:form action="loginAction">
<%...-- <form action="LoginAction.action" method="post">--%>
<s:textfield name="userName" label="用户名"></s:textfield>
<br>
<s:password name="userPass" label="密 码"></s:password>
<br>
<s:submit></s:submit>
<%...-- </form>--%>
</s:form>
<br>
</body>
</html>
suc.jsp文件如下: <%...@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<jsp:directive.page import="com.struts2.LoginAction" />
<%...@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'suc.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
${sessionScope.user },欢迎登陆。。。。。
<br>
</body>
</html>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<!-- <init-param></init-param>-->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>
</web-app>
然后创建action类,在struts2中不需要actionform类,并且struts2中的action也不需要继承一个特定的action类,但一般情况他都会继承这个类com.opensymphony.xwork2.ActionSupport,然后重写他的execute()方法,该方法返回一个字符串,学过jsf的朋友应该知道的,这和jsf有点相似,刚才说他不需要actionform,其实现在的action中定义属性即可,然后给他们getter和setter方法,LoginAction代码如下: package com.struts2;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport ...{
/** *//**
*
*/
private static final long serialVersionUID = 1L;
private String userName;
private String userPass;
public String getUserName() ...{
return userName;
}
public void setUserName(String userName) ...{
// org.apache.struts2.dispatcher.FilterDispatcher
this.userName = userName;
}
public String getUserPass() ...{
return userPass;
}
public void setUserPass(String userPass) ...{
this.userPass = userPass;
}
@Override
public String execute() throws Exception ...{
// TODO Auto-generated method stub
if ("zhangsan".equals(userName) && "lisi".equals(userPass)) ...{
ActionContext.getContext().getSession().put("user", getUserName());
return SUCCESS;
} else ...{
return INPUT;
}
}
}
接着就来配置这个action,这个文件的名字叫做struts.xml有点象struts1中的struts-config.xml文件.他的存放路径我现在只知道可以放在classes下,也就是src目录下,action中配置了action路径,struts.xml代码如下: <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- <constant name="struts.enable.DynamicMethodInvocation"-->
<!-- value="false" />-->
<!-- <constant name="struts.devMode" value="false" />-->
<package name="struts2" extends="struts-default">
<action name="loginAction" class="com.struts2.LoginAction">
<result name="input">/login.jsp</result>
<result name="success">/suc.jsp</result>
</action>
<!-- <action name="....." class="....." method=".....">-->
<!--其中name可以随便起,这是以后自己要用到的,class就是类的全名,刚才说action不需要继承某个类,
也就是说他可以不遵循某中规范,可以在自定义的action中自定义处理方法-->
<!-- <result>........</result> 相当与actionforward-->
<!-- </action>-->
</package>
</struts>
编写jsp文件,很简单如代码: <%...@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%...@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<s:form action="loginAction">
<%...-- <form action="LoginAction.action" method="post">--%>
<s:textfield name="userName" label="用户名"></s:textfield>
<br>
<s:password name="userPass" label="密 码"></s:password>
<br>
<s:submit></s:submit>
<%...-- </form>--%>
</s:form>
<br>
</body>
</html>
suc.jsp文件如下: <%...@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<jsp:directive.page import="com.struts2.LoginAction" />
<%...@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'suc.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
${sessionScope.user },欢迎登陆。。。。。
<br>
</body>
</html>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先你的需求就不合理,用户的数量是多大,放到select里就会变的无限长,
谁给你做的需求分析,脑瓜进水啦.
<html:select id="userlist" name="userlist">
<option value='<bean:write name="userlist" property="userId"/>'>
<bean:write name="userlist" property="username" />
</option>
</html:select>就OK了.
谁给你做的需求分析,脑瓜进水啦.
<html:select id="userlist" name="userlist">
<option value='<bean:write name="userlist" property="userId"/>'>
<bean:write name="userlist" property="username" />
</option>
</html:select>就OK了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<html:select>和<select>的用法大同小异,只要你能把userlist的数据显示在JSP页面,也就能把数据写到<select>中去,也就能把它放到<html:select>中。
大概示例:
<html:select name="userSelect">
<!-- 这里自己用循环读userlist的东西显示出来 -->
<html:option value="1">用户1</html:opiton>
<html:option value="2">用户2</html:opiton>
</html:select>
大概示例:
<html:select name="userSelect">
<!-- 这里自己用循环读userlist的东西显示出来 -->
<html:option value="1">用户1</html:opiton>
<html:option value="2">用户2</html:opiton>
</html:select>
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询