本帖最后由 hc8758 于 2011-01-15 11:41:53 编辑

解决方案 »

  1.   

    32行 Cannot find bean: "id" in any scope
      

  2.   

    你那个id 在后台没有给定在request、session、application范围。 就是说id这个变量没有被保存在这其中一个范围中,前台去取不到。你看看后台的程序。
      

  3.   

    我刚看了一下,把<bean:write name="id" />注释掉可以运行成功,但后面还是有很多这种现象,不可能是这句话有问题,我估计就跟5楼说的一样,后台的程序没有连接过来。我后台的java程序是这样写的:(中间的welcome.jsp指的就是1楼我贴的代码),请大家帮我看看,是哪有问题?/*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package com.yourcompany.struts.action;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import mypackage.DataConnection;import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;/** 
     * MyEclipse Struts
     * Creation date: 12-31-2009
     * 
     * XDoclet definition:
     * @struts.action validate="true"
     * @struts.action-forward name="r" path="/welcome.jsp"
     */
    public class ReturnAction extends Action {
    /*
     * Generated Methods
     */ /** 
     * Method execute
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    request.setAttribute("id", DataConnection.getId());
    return mapping.findForward("r");
    }
    }
      

  4.   

    前台直接${id}或者<%=request.getAttribute("id")%>
      

  5.   

    <bean:write name="id" />
    估计在struts的源码会被翻译成类似request.getAttribute("strust自己定义的前缀"+"id");
    所以用bean标签的时候,前面应该是调用
    struts的action的setMessage之类的东西
      

  6.   

    <bean:write name="id" />这个是国际化标准什么的吧,你那个配置文件写了吗?
      

  7.   

    我记得<bean:write name="id" />这个标签不是读取request中的值的标签,是国际化的那个东西
    <bean:write name="name" />通过检测时区判断,如果中国的就会输出“名字”,如果是其他时区就会是英文和日文,和一个配置文件有关,详情搜索struts国际化!
      

  8.   

    楼主这样写就OK了
    <logic:present name="id">
      <bean:write name="id"/>
    </logic>bean:write 运行的时候首先会在page,request,session,application等重去找有没有id这个对象出现
    有了就会写到页面。
    没找到的话就会说 not in any scope;