struts-config.xml中:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
</form-beans>
<global-exceptions>
</global-exceptions>
<global-forwards>
<forward name="welcome" path="/Welcome.do"/>
</global-forwards>
<action-mappings>
<action path="/Link" parameter="method" type="com.sicmsb.action.LinkAction">
<forward name="search" path="search"/>
</action>
<action path="/Welcome" forward="/welcomeStruts.jsp"/>
</action-mappings>
<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
<message-resources parameter="com/vaannila/ApplicationResource"/>
<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
</plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
瓷砖 - defs.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="baseLayout" path="/common-layout.jsp">
<put name="header" value="/header.jsp" />
<put name="body" value="/body.jsp" />
<put name="footer" value="/footer.jsp" />
</definition>
<definition name="search" extends="baseLayout">
<put name="body" value="/searchMyUser.jsp" />
</definition>
</tiles-definitions>
共layout.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<table border="1" width="100%" height="100%">
<tr>
<td><tiles:insert attribute="header" /></td>
</tr>
<tr>
<td><tiles:insert attribute="body" /></td>
</tr>
<tr>
<td><tiles:insert attribute="footer" /></td>
</tr>
</table>
</body>
</html>
searchMyUser.jsp:
<%@page import="com.sicmsb.bean.Comments"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function submitAdd(form) {
form.submit();
}
function goDetail(commentId) {
var myform = document['detForm'];
//myform.action = "/detail.do";
myform['commentId'].value = commentId;
myform.submit();
}
</script>
<style>
A {
text-decoration: underline;
color: blue;
cursor: pointer;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Search here</title>
</head>
<body>
<form name="detForm" action="details.do" method="post">
<input type="hidden" name="commentId" />
</form>
<h1>Search in MyUser</h1>
<form action="SearchUser.do" method="post">
<table cellpadding="3pt">
<tr>
<td>Insert Name : <html:text name="CommentsUpdated"
property="myUser" size="30"></html:text></td>
</tr>
</table>
<p />
<input type="button" value="Search"
onclick="this.disabled=true; submitAdd(this.form)" />
</form>
<hr />
<table>
<tr>
<th>Name</th>
<th>Email</th>
<th>Webpage</th>
<th>Summary</th>
<th>Comments</th>
</tr>
<logic:iterate id="comment" name="listComments"
type="com.sicmsb.bean.Comments">
<tr>
<td><a onclick="goDetail('<%=comment.getCommentId()%>')"> <bean:write
name="comment" property="myuser" />
</a>
<td>|<bean:write name="comment" property="email" />
<td>|<bean:write name="comment" property="webpage" />
<td>|<bean:write name="comment" property="summary" />
<td>|<bean:write name="comment" property="comments" />
</tr>
</logic:iterate>
</table>
</body>
</html>
link action.Java:
package com.sicmsb.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
public class LinkAction extends DispatchAction {
public ActionForward Search(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return mapping.findForward("search");
}
}
我设法创建模板并调用没有“名称”属性的表单。它工作,然后我意识到我必须调用具有名称属性(CommentsUpdated
)的表单,以便我能够传递变量以从中挖掘数据不幸的是,它会抛出这样的错误:
javax.servlet.jsp.JspException: Cannot find bean: "CommentsUpdated" in any scope
。
我明白我的serachMyUser.jsp
中的name属性导致了这个错误,但我仍然坚持这一部分,我试图在谷歌搜索示例,但我得到的是表格被调用没有名称属性。
<action path="/Link" parameter="method" type="com.sicmsb.action.LinkAction" name="CommentsUpdated">
<forward name="baseLayout" path="baseLayout"/>
<forward name="search" path="search"/>
<forward name="details" path="details"/>
<forward name="insert" path="insert"/>
最后我发现了问题,我在struts-config.xml中的活动里面输入name="CommentsUpdated"
后就可以了!希望这对其他人也有帮助!
如果未在操作配置中设置name
属性,该属性应与<form-bean>
名称相同,但在标记中使用了该名称
<html:text name="CommentsUpdated" .../>
当然你有一个例外
Cannot find bean: “CommentsUpdated” in any scope
如果配置了表单bean和操作名称,Struts将实例化一个表单bean并将其传递给操作。如果您想自己实例化它,那么在JSP中访问它之前,您应该将它放入任何范围。