提示删除:<script language = "javascript">
function Delete(){
  alert("are you sure to detele this item?");
  productsRecord.location.href="admin/productsDelete.jsp?id="+id;
}
</script>
在displaytag 中 <display:column title="删除 "href="admin/productsDelete.jsp" autolink="true" paramId="id" paramProperty="id" onclick="Delete()">删除</display:column>
会提示:
error:
org.apache.jasper.JasperException: /admin/productsMan.jsp(89,5) Attribute onclick invalid for tag column according to TLD
好像displaytag不支持这个写法,如何办?
在content中,我想显示50个字母,而不要全部。<display:column property="content" title="内容" ><%= news.getContent().substring(0,50)%></display:column>
这个写法也不行,如何处理?

解决方案 »

  1.   

    现在还有人用DT啊?
    第一个问题:<display:column title="删除" media="html" >
      <input type="button" onclick="Delete()" value="删除"/>
    </display:column>
    第二个问题:<display:column title="内容" media="html" >
      <%= news.getContent().substring(0,50)%>
    </display:column>
      

  2.   

    function Delete(){ 
    if (confirm('are you sure to detele this item?')){
     productsRecord.location.href="admin/productsDelete.jsp?id="+id; 
    }
    }
      

  3.   

    谢谢你的回复。
    请问我删除时候如何传递有效id,使之能够 对应删除。
    <script language = "javascript">
    function Delete(id){
      if(confirm("are you sure to detele this item?")){
      window.location.href="admin/productsDelete.jsp?id="+id;
    }
    }
    </script>
    <display:column title="删除"  paramId="id" paramProperty="id" media="html" ><input type="button" onclick="Delete()" value="删除"/></display:column></display:table>
    同样报错
    使用:<display:column title="内容" media="html" >
      <%= news.getContent().substring(0,50)%>
    </display:column>
    出现:
    java.lang.NullPointerException
      

  4.   

    function Delete(){ 
    if (confirm('are you sure to detele this item?')){ 
    productsRecord.location.href="admin/productsDelete.jsp?id="+id; 

    }
    当我使用上面代码,出现提示删除对话框后,页面根本没有反应,看来还是传递参数问题。
      

  5.   

    稍等,我写个demo试一下,好久没有用这个了
      

  6.   

    我用的displayTag 1.2; 在struts1.2页中正常
              <display:column property="content" title="备注" maxLength="5"></display:column>          <display:column title="删除" href="admin/productsDelete.jsp" paramId="id" paramProperty="ID">删除
      </display:column>   
      

  7.   


     忘了你是要先确认再删除!   <script language = "javascript">
    function Delete(id){
      if(confirm("确定删除此项吗?")){
       window.location.href="admin/productsDelete.jsp?id="+id;
      }
    }
       </script>   <disp:column title="删除2">
          <input type="button" onclick="Delete(<%=pageContext.getAttribute("ID")%>)" value="删除"/>       
      </disp:column> 
      

  8.   

    测试了一下如果是struts传值:
    <input type="button" onclick="Delete(<%=pageContext.getAttribute("ID")%>)" value="删除"/>  是错的
    要用jstl取值<%@ taglib uri="/WEB-INF/displaytag.tld" prefix="disp" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <logic:equal name="action" value="list" scope="request" > 
    DisplayTag Demo:<br>
    <disp:table name="resultList" export="true" pagesize="15" requestURI="/test.do"  id="resultList">
              <disp:column property="ID" title="ID" sortable="true" headerClass="sortable" ></disp:column>
              <disp:column property="userName" title="用户名" sortable="true" headerClass="sortable" ></disp:column>
              <disp:column property="passWord" title="密码"></disp:column>
              <disp:column property="content" title="备注" maxLength="5"></disp:column>          <disp:column title="删除" href="admin/productsDelete.jsp" paramId="id" paramProperty="ID">删除</disp:column>   
      
              <disp:column title="删除2">
              <input type="button" onclick='Delete(<c:out value="${resultList.ID}"/>)' value="删除"/>       
      </disp:column>     
      
    </disp:table> 
    </logic:equal>  public ActionForward list(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) { ArrayList resultList = new ArrayList();
    for (int i = 1; i <= 500; i++) {
    HashMap col = new HashMap();
    col.put("ID", i);
    col.put("userName", "用户" + i);
    col.put("passWord", "123456:" + i);
    col.put("content", "内容12345,超过5位了:" + i);
    resultList.add(col);
    }
    request.setAttribute("resultList", resultList); // 把结果存入request request.setAttribute("action", "list");
    return mapping.findForward("list");
    }
      

  9.   

    我并没有使用 框架,我使用的是javabean和jsp。现在修改后,越来不行了。点击删除,连提示删除的对话框都没有。
    下面是productsMan.jsp和productsDelete.jsp页面的代码。
    即使删除按钮添加成功,破坏了页面的风格,既要使用displaytag,又能够较好提示一些操作而不使用按钮,如何办?
    我的问题很多,但是非常感谢 老菜 !谢谢!
     
    productsMan.jsp:
    <script language = "javascript">
    function Delete(id){ 
    if (confirm('are you sure to detele this item?')){ 
    window.location.href="admin/productsDelete.jsp?id="+id; 
    }
    }
    </script></head>
      
    <body topmargin="0" leftmargin="0"><jsp:useBean id="products" class="com.Company.cn.Products" scope="request"></jsp:useBean>
    <% 
     DBConnection conn = new DBConnection();
     ResultSet rs = Products.getProductsList(conn);  
         RowSetDynaClass resultSet = new RowSetDynaClass(rs, false);        
                     conn.close(); 
                     request.setAttribute("productsResult",resultSet);
    %>
    <% org.displaytag.decorator.CheckboxTableDecorator decorator = new org.displaytag.decorator.CheckboxTableDecorator();
        decorator.setId("id");
        decorator.setFieldName("_chk");
        pageContext.setAttribute("checkboxDecorator", decorator);
    %>
    <div id="content">
    <form method="post" name="productsRecord" action="admin/productsMan.jsp" >
    <div align="center">
        <display:table name="requestScope.productsResult.rows" defaultsort="1" defaultorder="descending" id="productsTable" pagesize="10" decorator="checkboxDecorator" excludedParams="_chk" form="productsRecord" export="false" class="its" >
         
     <display:column property="releaseTime" title="发布时间" sortable="true" headerClass="sortable"></display:column><display:column title="修改 "href="admin/productsModify.jsp" autolink="true" paramId="id" paramProperty="id">修改</display:column>
    <display:column title="删除"  paramId="id" paramProperty="id" media="html" ><input type="button" onclick=='Delete(<c:out value="${productsRecord.id}"/>)'
    value="删除"/></display:column>
      </display:table> </form>
    </div></body>
    productsDelete.jsp
     <body> <jsp:useBean id="products" class="com.Company.cn.Products" scope="request"></jsp:useBean>
    <%
    DBConnection conn = new DBConnection();
    products.getProductsInfo(conn,Integer.parseInt(request.getParameter("id")));
    products.setID(Integer.parseInt(request.getParameter("id")));
    products.deleteFromDB(conn);
    out.println("delete done!!");
    response.sendRedirect("productsMan.jsp");
     %>
      </body>
      

  10.   

    使用substring 截取部分字符,也不能成功。抛除java.lang.NullPointerException
    人憔悴啊。<display:table name="requestScope.newsResult.rows" defaultsort="1" defaultorder="descending" id="newsTable" pagesize="10" decorator="checkboxDecorator" excludedParams="_chk" form="newsRecord" export="false" class="its" >
          <display:column title="序号"><%=pageContext.getAttribute("newsTable_rowNum")%></display:column>
      <display:column property="title" title="标题"href="admin/newsShow.jsp" autolink="true" paramId="id"
    paramProperty="id"></display:column>
      <display:column property="author" title="作者"></display:column>
      <display:column property="productModel" title="关联产品"></display:column>
      <display:column property="classType" title="新闻类型" sortable="true" headerClass="sortable"></display:column>
      <display:column property="releaseTime" title="发布时间" sortable="true" headerClass="sortable"></display:column>
                  <display:column property="hitTimes" title="点击次数" sortable="true" headerClass="sortable"></display:column> <display:column property="content"title="内容" media="html" ><%=news.getContent().substring(0,50)%></display:column>
      <display:column title="修改 "href="admin/newsModify.jsp" autolink="true" paramId="id" paramProperty="id">修改</display:column>
      <display:column title="删除 "href="admin/newsDelete.jsp" autolink="true" paramId="id" paramProperty="id">删除</display:column>
      </display:table>
      

  11.   

    楼主没有看我上面的回答吗?用框架和用jsp一样的。<display:column property="content" title="内容" maxLength="50"></display:column> 
      

  12.   

    不使用按钮就这样了啊。<display:column title="删除2">
        <a href='javascript:Delete(<%=pageContext.getAttribute("id")%>)'>删除</a>
    </display:column>
      

  13.   

    直接帮你改好吧productsMan.jsp:<script language = "javascript">
    function Delete(id){
      if (confirm('are you sure to detele this item?')){
        window.location.href="admin/productsDelete.jsp?id="+id;
      }
    }
    </script></head>
     
    <body topmargin="0" leftmargin="0"><jsp:useBean id="products" class="com.Company.cn.Products" scope="request"> </jsp:useBean>
    <%
    DBConnection conn = new DBConnection();
    ResultSet rs = Products.getProductsList(conn); 
    RowSetDynaClass resultSet = new RowSetDynaClass(rs, false);       
    conn.close();
    request.setAttribute("productsResult",resultSet);
    %>
    <% org.displaytag.decorator.CheckboxTableDecorator decorator = new org.displaytag.decorator.CheckboxTableDecorator();
        decorator.setId("id");
        decorator.setFieldName("_chk");
        pageContext.setAttribute("checkboxDecorator", decorator);
    %>
    <div id="content">
    <form method="post" name="productsRecord" action="admin/productsMan.jsp" >
    <div align="center">
      <display:table name="requestScope.newsResult.rows" defaultsort="1" defaultorder="descending" id="newsTable" pagesize="10" decorator="checkboxDecorator" excludedParams="_chk" form="newsRecord" export="false" class="its" >
        <display:column title="序号"> <%=pageContext.getAttribute("newsTable_rowNum")%> </display:column>
        <display:column property="title" title="标题"href="admin/newsShow.jsp" autolink="true" paramId="id" paramProperty="id"></display:column>
        <display:column property="author" title="作者"> </display:column>
        <display:column property="productModel" title="关联产品"> </display:column>
        <display:column property="classType" title="新闻类型" sortable="true" headerClass="sortable"> </display:column>
        <display:column property="releaseTime" title="发布时间" sortable="true" headerClass="sortable"> </display:column>
        <display:column property="hitTimes" title="点击次数" sortable="true" headerClass="sortable"> </display:column>    <display:column property="content"title="内容" maxLength="50"></display:column>     <display:column title="修改 "href="admin/productsModify.jsp" autolink="true" paramId="id" paramProperty="id">修改 </display:column>    <display:column title="删除"><a href='javascript:Delete(<%=pageContext.getAttribute("id")%>)'>删除</a></display:column></display:table>
    </div>
    </form>
    </div> 
      

  14.   

    谢谢老菜,截取字符问题解决了。
    使用<display:column title="删除"><a href='javascript:Delete(<%=pageContext.getAttribute("id")%>)'>删除</a></display:column>
    但是,删除提示确认后,出现:
    org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/productsDelete.jsp at line 2926:  <jsp:useBean id="products" class="com.Company.cn.Products" scope="request"></jsp:useBean>
    27:  <%
    28:  DBConnection conn = new DBConnection();
    29:  products.getProductsInfo(conn,Integer.parseInt(request.getParameter("id")));
    30:  products.setID(Integer.parseInt(request.getParameter("id")));
    31:  products.deleteFromDB(conn);
    32:  out.println("delete done!!");
    java.lang.NumberFormatException: For input string: "null"
    看来是id为null。
    productsDelete.jsp 
    <body> <jsp:useBean id="products" class="com.Company.cn.Products" scope="request"> </jsp:useBean> 
    <% 
    DBConnection conn = new DBConnection(); 
    products.getProductsInfo(conn,Integer.parseInt(request.getParameter("id"))); 
    products.setID(Integer.parseInt(request.getParameter("id"))); 
    products.deleteFromDB(conn); 
    out.println("delete done!!"); 
    response.sendRedirect("productsMan.jsp"); 
    %> 
      </body>
      

  15.   

    引入jstl
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>将
    <display:column title="删除"><a href='javascript:Delete(<%=pageContext.getAttribute("id")%>)'>删除</a></display:column>
    改为
    <display:column title="删除"><a href='javascript:Delete(<c:out value="${newsTable.id}"/>)'>删除</a></display:column>注意:newsTable要跟
    <display:table......id="newsTable" ..>这个一致;Js:
    <script language = "javascript">
    function Delete(id){
      if(isNaN(parseInt(id)){
        alert('没有取到id值');
        return;
      }
      if (confirm('are you sure to detele this item?')){
        window.location.href="admin/productsDelete.jsp?id="+id;
      }
    }
    </script>
      

  16.   

    上面js少个 ) 号
    if(isNaN(parseInt(id))){
      

  17.   

    适才按照您的方法编码,但是整个页面都没有显示:
    message description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: Property 'id' not found on type org.apache.commons.beanutils.BasicDynaBean
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause javax.el.PropertyNotFoundException: Property 'id' not found on type org.apache.commons.beanutils.BasicDynaBean
    javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
    javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
    javax.el.BeanELResolver.property(BeanELResolver.java:279)
    javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
    javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
    org.apache.el.parser.AstValue.getValue(AstValue.java:118)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:925)
    org.apache.jsp.admin.productsMan_jsp._jspx_meth_c_005fout_005f0(productsMan_jsp.java:558)
    org.apache.jsp.admin.productsMan_jsp._jspx_meth_display_005fcolumn_005f8(productsMan_jsp.java:530)
    org.apache.jsp.admin.productsMan_jsp._jspService(productsMan_jsp.java:279)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.