Its all looks good to me except that File.getName() is returning an empty
String - instead of using "name" in your <bean:write> try "path" and I think
you'll see what you're expecting:

   <logic:iterate id="drive" name="listDrivesForm" property="drives">
     <tr><td><bean:write name="drive" property="path" /></td></tr>
   </logic:iterate>


Niall

----- Original Message ----- 
From: "None None" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, May 06, 2004 8:16 PM
Subject: Some further newbie woes


> Ok, I've banged my head enough in the past two hours...
>
> I'm working on a file manager Struts app to get myself acquainted with
> Struts.  The first logical step is a list of drives.  Here's what I've
> done...
>
> I have created an index.jsp that does a quick forward to main.jsp (just
like
> the blank struts app does).  In main.jsp I have a simple link to
> listDrives.ofm (using extension mapping in this app).  Here's my
> struts-config.xml file, minus comments, linebreaks and the XML & doctype
> tags (to save space here)...
>
> <struts-config>
>     <form-beans>
>       <form-bean name="listDrivesForm"
> type="com.omnytex.ofm.actionforms.ListDrivesForm" />
>     </form-beans>
>     <global-forwards>
>       <forward name="main" path="/main.ofm" />
>     </global-forwards>
>     <action-mappings>
>       <action path="/main" type="org.apache.struts.actions.ForwardAction"
> parameter="/jsp/main.jsp" />
>       <action path="/listDrives"
> type="com.omnytex.ofm.actions.ListDrivesAction" name="listDrivesForm"
> scope="request" validate="false">
>         <forward name="showDrivesList" path="/jsp/drivesList.jsp" />
>       </action>
>     </action-mappings>
> </struts-config>
>
> Simple enough.  So, I click my link and the following ActionForm is
> instantiated in request scope:
>
> package com.test.ofm.actionforms;
> import org.apache.struts.action.*;
> import java.io.*;
> import java.util.*;
> public class ListDrivesForm extends ActionForm {
>   private ArrayList drives = null;
>   public ListDrivesForm() {
>     drives = null;
>   }
>   public void setDrives(File[] inDrives) {
>     drives = new ArrayList();
>     for (int i = 0; i < inDrives.length; i++) {
>       drives.add(inDrives[i]);
>     }
>   }
>   public ArrayList getDrives() {
>     return drives;
>   }
> }
>
> Also simple enough.  Next, the following action executes:
>
> package com.test.ofm.actions;
> import org.apache.struts.action.*;
> import java.io.*;
> import javax.servlet.http.*;
> import com.test.ofm.actionforms.*;
> public class ListDrivesAction extends Action {
>   public ActionForward execute(ActionMapping mapping, ActionForm form,
> HttpServletRequest request, HttpServletResponse response) throws Exception
{
>     File[] drives = File.listRoots();
>     ListDrivesForm ldf = (ListDrivesForm)form;
>     ldf.setDrives(drives);
>     return mapping.findForward("showDrivesList");
>   }
> }
>
> Now, to this point I am OK because if I do a simple println of
> ldf.getDrives(), I in fact get a list of the drives on my system as
> expected.  So, I know my basic flow to this point is OK, and I know the
code
> in the action is doing what I expect.  Lastly, I have the following JSP:
>
> <%@ page language="java" import="java.io.*,com.omnytex.ofm.actionforms.*"
%>
> <%@ taglib uri="/WEB-INF/tld/struts-logic.tld" prefix="logic" %>
> <%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean"%>
> <html>
> <head>
> <title>File Manager</title>
> </head>
> <body>
> File Manager
> <br><hr><br>
> <table border="1" cellpadding="0" cellspacing="0" width="100%">
>   <logic:iterate id="drive" name="listDrivesForm" property="drives">
>     <tr><td><bean:write name="drive" property="name" /></td></tr>
>   </logic:iterate>
> </table>
> </body>
> </html>
>
> This is where the problem arises... My table is being built, and the
proper
> number of rows are there, but I'm not seeing the drive letter being
> displayed.  I have verified that my listDrivesForm is present and
populated
> by donig:
>
> <%
>   ListDrivesForm ldf =
> (ListDrivesForm)request.getAttribute("listDrivesForm");
>   System.out.println(ldf);
> %>
>
> Sure enough, I see my drive list.  Now, I've been playing with various
names
> and ID combinations in the logic:iterate and bean:write tags, but nothing
> seems to make it work.  I've also tried in place of bean:write:
>
> <tr><td><%=((File)drive).getName()%></td></tr>
>
> From my reading I expected that to work just as well.  I've also tried
> adding the scope attribute to the bean:write tag to no avail.
>
> So, what am I doing wrong here?  Do I need to do usebean here?  Every
> example I've seen of this never shows that, so I assume not.  Also, why
> didn't the code manually calling getName() above not work either?  Even if
I
> needed useBean I would expect that to still work, which leads me to
believe
> I DON'T need useBean.
>
> Any help is very much appreciated!
>
> _________________________________________________________________
> MSN Toolbar provides one-click access to Hotmail from any Web page - FREE
> download! http://toolbar.msn.com/go/onm00200413ave/direct/01/
>
>
> ---------------------------------------------------------------------
> 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]

Reply via email to