com.opensymphony.xwork2.DefaultTextProvider 显示在 Struts2 文本字段值

问题描述

我的 JSP 正在从 URL 获取参数,并且工作正常。但如果 URL 中没有参数,则文本字段的值显示 com.opensymphony.xwork2.DefaultTextProvider

就像当 URL 为 login.jsp?user=USER1 时,它输出 USER1。但如果它是 login.jsp,它会显示 com.opensymphony.xwork2.DefaultTextProvider

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<%@ taglib prefix="html" uri="/struts-tags"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

String user = request.getParameter("user");
        if(user == null) user = "";

<c:set var="user"><%=user%></html:set>
<c:textfield id="user" name="user" value='%{#user}'/>

解决方法

您不需要使用 scriptlet 和 JSTL 标签来获取请求参数。

相反,您可以通过 OGNL 访问参数。为 taglib 使用命名前缀。

<%@ taglib prefix="s" uri="/struts-tags"%>

<s:textfield id="user" name="user" value="%{#parameters.user}"/>