特性标记的默认值(struts2)

特性标记的默认值(struts2),struts2,Struts2,我试图让一个默认值来自JSP页面中的一个bean,但是我无法获取表达式来提取该值。我正在使用的一个JSP示例是 <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title> Testing OGNL conversions </titl

我试图让一个默认值来自JSP页面中的一个bean,但是我无法获取表达式来提取该值。我正在使用的一个JSP示例是

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
    <head>
        <title> Testing OGNL conversions </title>
    </head>
  <body>
       The data stored is
       <s:property value="dataField" /><br/>
       The property of thisdata is 
       <s:property value="thisdata" default="%{dataField}" /><br/>
       <s:property value="dataField" />
  </body>
</html>
假设struts.xml和类是正确的(既然是打印出来的,正如预期的那样,它们应该是正确的),我如何从数据字段中获取默认值(是的,我知道愚蠢的名称,但对于测试代码,它对我来说是有效的)


数据字段存在于bean中,但此数据不存在(这样做是为了可以打印默认值)

我在前一段时间进行了Struts2测试,所以不完全确定,但请尝试此操作


s:property
标记的前面提到当
不存在时使用
默认值
。因此,请尝试删除
属性,只需使用
default=“%{datafield}”
我在前一段时间做了Struts2,所以不完全确定,请尝试此操作


s:property
标记的前面提到当
不存在时使用
默认值
。因此,请尝试删除
属性,只需使用
default=“%{datafield}”
属性标记的默认参数不会对OGNL进行计算

因此,您可以使用struts if/elseif/else标记(或JSTL等效标记):


OGNL在值属性中求值,因此三元值可以节省大量空间:

<s:property value="somevar1 == null?someVar2:someVar1"/>


进一步说明。。。property标记的value属性最初设置为action类(在迭代器中,这将是您所期望的),因此通常需要设置value属性才能使默认值按预期工作,如果未提供,则标记输出与

相同,属性标记的默认参数不会针对OGNL进行计算

因此,您可以使用struts if/elseif/else标记(或JSTL等效标记):


OGNL在值属性中求值,因此三元值可以节省大量空间:

<s:property value="somevar1 == null?someVar2:someVar1"/>


进一步说明。。。property标记的value属性最初设置为action类(在迭代器中,这将是您所期望的),因此通常需要设置value属性才能使默认值按预期工作,如果没有提供标记输出,则标记输出与

相同。首先,它返回时在其上方的%{dataField}处使用了错误的值,返回时没有,我在Struts2一书中读到的理解是,如果属性的返回值为NULL,则struts将使用默认值(如上所述,只是没有对其进行评估)现在看起来它的评估不正确(只有两个可能的值是YES和NO,getDataFeild函数只返回值,不处理它)现在的问题是,你能给它一个值吗?为什么这次它的值是错误的?返回值
value
不是
NULL
,因为你在
value
字段中放置了随机文本。至于错误的值,你最好确保getter/setter中的所有内容都是正确的在上,数据类型正在使用自定义转换这一事实是否会影响默认值的工作方式?(因此,这两个值是YES和NO,但实际上在对象中它只是布尔值)?首先,它返回时在%{dataField}处使用了错误的值上面返回的结果是NO,我在Struts2一书中读到的理解是,如果属性的返回值为NULL,那么struts将使用默认值(正如上面没有计算它一样),现在看起来它的计算不正确(只有两个可能的值是YES和NO,getDataFeild函数只返回该值,不进行任何处理)现在的问题是,你能给它一个值吗?为什么这次它的值是错误的?返回值
value
不是
NULL
,因为你在
value
字段中放置了随机文本。至于错误的值,你最好确保getter/setter中的所有内容都是正确的在上,数据类型正在使用自定义转换这一事实是否会影响默认值的工作方式?(因此这两个值是YES和NO,但实际上在对象中它只是布尔值)?
<s:property value="somevar1 == null?someVar2:someVar1"/>