我正在创建一个简单的Web应用程序(使用JSP),其中用户可以添加,更新和删除员工记录。在添加新记录时,不允许用户输入last和给定名称的空值。如果用户尝试使用空值添加记录,则会显示错误消息。从Java文件(操作)中的String生成错误消息。但是,String包含HTML标记。它们不是HTML代码,而是HTML实体。
以下是我的操作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. <b>First name</b></span>
</li>
</ul>
答案 0 :(得分:0)
这实际上是理想的行为。插入的文本本质上是不值得信任的,因为它包含用户提供的标记/ javascript会破坏您的布局,或者更糟糕的是,插入跨站点脚本和其他不良行为。
你不应该像这样在你的代码中嵌入html。最好将消息存储在单独的属性文件中,并在运行时插入特定于案例的值。例如,属性文件将具有:
invalid.name=Not valid. {0}
该名称将在运行时插入。