Error messages display as follows.
[ServletException in:/layout/menu.jsp] null'
java.lang.ClassCastException at
org.apache.jsp.layout.menu_jsp._jspService(menu_jsp.java:193) at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
...
...
after adding a few lines to test in the following class,
public final class MyMenuAction extends TilesAction implements Controller {
public ActionForward perform( ComponentContext context,
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
perform( context, request, response, getServlet().getServletContext() );
return null;
}
public void perform(ComponentContext context,
HttpServletRequest request, HttpServletResponse response,
ServletContext servletContext)
throws ServletException, IOException {
List menuItems = (List) context.getAttribute("items"); //
menuItems.add("customize1");
// this few lines
menuItems.add("customize2"); //
context.putAttribute("items", menuItems); //
...
Struts-defs.xml:
<definition name="erp.menu.home" path="/layout/menu.jsp"
controllerClass="com.common.tiles.MyMenuAction" >
<put name="title" value="Tiles" />
<putList name="items" >
<item value="customize1" link="/Welcome1.jsp" />
<item value="customize2" link="/Welcome2.jsp" />
</putList>
</definition>
How can I add a few lines of creating a list to test the menu?
Thanks
On Tue, 26 Oct 2004 19:57:49 +0200, Mark Lowe <[EMAIL PROTECTED]> wrote:
> To do what you want you want a tiles controller, not an action.
>
> import org.apache.struts.tiles.ComponentContext;
> import org.apache.struts.tiles.ControllerSupport;
> import org.apache.struts.tiles.beans.SimpleMenuItem;
> import java.util.List;
> import javax.servlet.ServletContext;
> import javax.servlet.ServletException;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
> import javax.servlet.http.HttpSession;
>
> public class GroupController extends ControllerSupport {
> public void execute(ComponentContext tileContext,
> HttpServletRequest request, HttpServletResponse response,
> ServletContext context) throws Exception {
>
> List menuItems = (List) context.getAttribute("items");
>
> .. add some menu items.
>
> context.putAttribute("items", menuItems);
> }
> }
>
> I;d try and avoid using a tiles controller as exception handling is an
> arse. Perhaps look at having a BaseAction that adds teh relevant items
> into the request.
>
> public abstract class BaseAction extends Action {
>
> protected abstract ActionForward doExecute(ActionMapping mapping,
> ActionForm form, HttpServletRequest request,
> HttpServletResponse response) throws Exception;
>
> public ActionForward execute(ActionMapping mapping, ActionForm form,
> HttpServletRequest request, HttpServletResponse response)
> throws Exception {
> ..
> request.setAttribute("items",menuItems); // perhaps application scope
>
> return doExecute(mapping, form, request, response);
> }
> }
>
> Now execute will be run for ever class that subclasses it, and they
> will have to use the doExecute(), method.. For more details check the
> xpetstore project out that uses this technique. This approach will
> allow you to make use of exception handlers.
>
> Mark
>
>
>
>
> On 26 Oct 2004, at 17:14, PC Leung wrote:
>
> > Hello world,
> >
> > The following is a fragment of tiles-defs.xml.
> > where MyMenuAction actually is UserMenuAction in Tiles.
> >
> > <definition name="erp.menu.home" path="/layout/menu.jsp"
> > controllerClass="com.common.tiles.MyMenuAction" >
> > <put name="title" value="Tiles" />
> > <putList name="items" >
> > <item value="customize" link="/Welcome.jsp" />
> > ^^^^^^^^^^ ^^^^^^^^^^^^^^^
> > </putList>
> > </definition>
> >
> > Where and how should I put the coding inside MyMenuAction
> > so that I can add a number of items which behaves as
> > a list of menu item?
> >
> > Thanks
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]