java - 使用 j2html 的登录表单示例

标签 java html hibernate servlets j2html

我只是尝试在 servlet 中使用 html 创建登录表单。但是我在某个地方卡住了。

我只是使用 Maven 依赖项。所以我不必关心 jar。

那么,让我们看一下我的主要 java 代码

package tutor.programacion.primerservlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import j2html.tags.Tag;

import static j2html.TagCreator.*;
/**
 * Servlet implementation class sampleJava2HTML
 */
@WebServlet("/")
public class sampleJava2HTML extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("inside the servlet calling this");
        enterPasswordInput("please enter something");




    }


public static Tag enterPasswordInput(String placeholder) {
        return passwordInput("enterpassword",placeholder);
    }


public static Tag passwordInput(String identifier,String placeholder) {
    return input()
            .withType("password")
            .withId(identifier)
            .withName(identifier)
            .withPlaceholder(placeholder)
            .isRequired();
}

}

最佳答案

要生成 HTML,您应该将标记添加到 ContainerTag,例如 html(),然后调用 renderFormatted() 方法。

例如:

import static j2html.TagCreator.body;
import static j2html.TagCreator.form;
import static j2html.TagCreator.h1;
import static j2html.TagCreator.html;
import static j2html.TagCreator.input;

import j2html.tags.ContainerTag;
import j2html.tags.Tag;

public class _50480568 {

    public static void main(String[] args) {
        System.out.println(generateHTML());
    }

    private static String generateHTML() {
        return html(generateBody()).renderFormatted();
    }

    private static ContainerTag generateBody() {
        return body(generetaH1Title(), generateForm());
    }

    private static ContainerTag generateForm() {
        return form().withMethod("post").withAction("/yourServlet").with(generateUserField(), generatePasswordField());
    }

    private static Tag generateUserField() {
        return input().withType("text").withName("user").withId("user");
    }

    private static ContainerTag generetaH1Title() {
        return h1("Hello World - Body!");
    }

    private static Tag generatePasswordField() {
        return input().withType("password").withName("password").withId("password");
    }

}

由于您使用的是 Servlet 类,因此您应该在 doGet 方法上编写响应,而不是在控制台 (System.out.println()) 上编写,如下所示:

java.io.PrintWriter pw = resp.getWriter();
pw.println(generateHTML());

这应该呈现以下 HTML:

<html>
    <body>
        <h1>
            Hello World - Body!
        </h1>
        <form method="post" action="/yourServlet">
            <input type="text" name="user" id="user">
            <input type="password" name="password" id="password">
        </form>
    </body>
</html>

我的项目是使用 j2html 版本 1.2.2 通过 maven 构建的

<dependency>
    <groupId>com.j2html</groupId>
    <artifactId>j2html</artifactId>
    <version>1.2.2</version>
</dependency>

关于java - 使用 j2html 的登录表单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50480568/

相关文章:

javascript - 如何更改图像 src onclick?播放/暂停

java - hibernate中M-M关系中的记录顺序不正确

Java while 循环没有按预期工作

java - 如何验证微服务的请求源

javascript - 当 Canvas 的高度超过屏幕的高度时(当滚动条出现时),如何在 Canvas (JavaScript)上测试鼠标检测

spring - 错误 : column "xxxxxxx" is of type character varying[] but expression is of type bytea

hibernate - spring jpa嵌套投影生成不正确的查询

java - Integer.toString(参数) 或 toString(参数)

java - war 文件的 jetty 9.x 基本目录的最小文件集是什么?

javascript - MongoError $regex 必须是一个字符串