Reputation: 21
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>
tiles-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>
common-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>
LinkAction.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");
}
}
I managed to create the template and call in the forms without the "name" attributes.It worked, then i realized i have to call in forms that have names attribute(CommentsUpdated
) so that i able to pass the variables for digging the data from database.Unluckily it throws error like this:
javax.servlet.jsp.JspException: Cannot find bean: "CommentsUpdated" in any scope
.
i understand that the name attribute in my serachMyUser.jsp
causing this error, but i'm stuck on this part, i've tried to search in google for examples, but all i get is the forms were called in without names attribute in it.
Upvotes: 2
Views: 22116
Reputation: 1
If you didn't set the name
property in the action config, which should be the same as <form-bean>
name, but used the name in the tag
<html:text name="CommentsUpdated" .../>
of course you got an exception
Cannot find bean: “CommentsUpdated” in any scope
Struts will instantiate a form-bean and pass it to the action if the form bean and action name are configured. If you want to instantiate it yourself then you should put it into any scope before accessing it in JSP.
Upvotes: 0
Reputation: 21
<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"/>
finally i found the Problem, after i enter name="CommentsUpdated"
inside the activity in struts-config.xml..it works! hope this might helpful for others too!
Upvotes: 0