java - JSP 自定义标签捕获用户输入

标签 java jsp jsp-tags

如何捕获 html 表单的使用输入并使用自定义 jsp 标记将其显示在另一个 jsp 页面中?像下面这样简单?

<小时/>

JSP页面

<%@ taglib uri="/myTLD" prefix="mytag"%>
<html>
  <title>My Custom Tags</title>
  <body>
    <form method="post" action="index.jsp">
    Insert you first name <br />
    <input type="text" name="username" />
    <input type="submit" value="Done" />
    </form>   
     <mytag:hello username="${param['username']}"/>
  </body>
</html>
<小时/>

WEB.XML

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

  <display-name>Hello</display-name>
<taglib>
     <taglib-uri>/myTLD</taglib-uri>
     <taglib-location>/WEB-INF/tld/taglib.tld</taglib-location>
    </taglib>
</web-app>
<小时/>

顶级域名文件

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
          PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
          "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<jsp-version>1.1</jsp-version>
<tlibversion>1.0</tlibversion>
<shortname></shortname>
<tag>
    <name>hello</name>
    <tag-class>com.jjolt.HelloTag</tag-class>
    <attribute>  
       <name>username</name>  
       <required>true</required>  
       <rtexprvalue>true</rtexprvalue>  
    </attribute>
</tag>
</taglib>
<小时/>

java类

package com.jjolt;

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class HelloTag extends BodyTagSupport 
{
  private String[] username=null;
  public int doStartTag()
  {
    username = (String[]) pageContext.getAttribute("username");
    return EVAL_BODY_INCLUDE;
  }
  public int doEndTag() throws JspException 
  {
    JspWriter out = pageContext.getOut();
    try 
    {
        out.println("Hello "+username[0]);
    } 
    catch (Exception e) 
    {
    }
     return SKIP_BODY;
  }
}

最佳答案

我认为您误解了自定义标签的工作原理,您首先需要提交表单,只有在此之后您才能访问用户输入字段的内容。

因此,对于您的示例,您应该具有以下内容:

form.jsp

<%@ taglib uri="/myTLD" prefix="mytag"%>
<html>
  <title>My Custom Tags</title>
  <body>
    <form method="post" action="index.jsp">
    Insert you first name <br />
    <input type="text" name="username" />
    <input type="submit" value="Done" />
    </form>  
    <!-- removed tag from here -->
  </body>
</html>

index.jsp

<%@ taglib uri="/myTLD" prefix="mytag"%>
<html>
  <title>My Custom Tags Result</title>
  <body>
    <mytag:hello username="${param['username']}"/>
  </body>
</html>

现在应该可以工作了。

关于java - JSP 自定义标签捕获用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6581879/

相关文章:

java - 在 ReSTLet 框架中通过 POST 获取值

Java:不同的byte[]在utf8中具有相同的字符串

java - 如何在登录表单中添加spring security

java - JSP.13.8 示例简单标记处理程序方案不起作用?

javascript - Struts2如何在jsp中获取ActionError计数

java - 发布到 Spring Controller 给出 404 Bad Request

java - 使用数据库jpa中现有和不存在的数据持久保存新数据时出错

java - 在 Web 应用程序中初始化 spring 和 hibernate

java - 以编程方式在 JSP 中获取 Tomcat8 HTTP 连接器的 maxPostSize

java - 显示标签在jsp中不显示详细信息