有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何将字符串作为HTML代码从Java文件读取到JSP页面?

我正在创建一个简单的web应用程序(使用JSP),用户可以在其中添加、更新和删除员工记录。在添加新记录时,不允许用户输入姓氏和给定名称的空值。如果用户试图添加带有空值的记录,将显示一条错误消息。错误消息是从Java文件中的字符串生成的(操作)。但是,该字符串包含HTML标记。它们不是作为HTML代码读取的,而是作为HTML实体读取的

以下是my action Java文件中的方法,该方法生成错误消息:

final static String SUCCESS_MSG = "New record has been added successfully.";
final static String ERROR_MSG = "Not valid. ";

public String addEmployee() throws Exception
{
    logger.info("addEmployee method called");
    if (!this.employee.getLastname().isEmpty()
            && !this.employee.getFirstname().isEmpty())
    {
        this.employeeManager.addEmployee(this.employee);

        addActionMessage(SUCCESS_MSG);
        return SUCCESS;
    }
    else
    {
        addActionError(ERROR_MSG + (this.employee.getFirstname().isEmpty() ? "<b>First name</b>" :
                this.employee.getLastname().isEmpty() ? "<b>Last name</b>" :
                        "<b>First</b> and <b>last names</b>") + " is null.");
        return ERROR;
    }
}

以下是我的JSP文件,其中将显示消息:

<s:if test="hasActionMessages()">
  <div class="alert alert-success" role="alert">
   <span class="glyphicon glyphicon-ok"></span>
  <s:actionmessage />
 </div>
</s:if>

<s:if test="hasActionErrors()">
 <div class="alert alert-danger" role="alert">
  <span class="glyphicon glyphicon-remove"></span>
   <s:actionerror />
 </div>
</s:if>

以下是输出: view image here

我检查了HTML源代码。HTML标记中的小于和大于被转换为HTML实体

<ul class="errorMessage">
 <li><span>Not valid. &lt;b&gt;First name&lt;/b&gt;</span>
 </li>
</ul>

共 (1) 个答案

  1. # 1 楼答案

    这实际上是我们想要的行为。插入的文本本质上是不可信的,因为它包含用户提供的标记/javascript,这将破坏您的布局,或者更糟糕的是,插入跨站点脚本和其他不受欢迎的行为

    您不应该像那样将html嵌入到代码中。最好将消息存储在单独的属性文件中,并在运行时插入特定于大小写的值。例如,属性文件将具有:

    invalid.name=Not valid. {0}
    

    该名称将在运行时插入