Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation Struts 2-基于验证错误有条件地在页面上显示元素_Validation_Jsp_Struts2 - Fatal编程技术网

Validation Struts 2-基于验证错误有条件地在页面上显示元素

Validation Struts 2-基于验证错误有条件地在页面上显示元素,validation,jsp,struts2,Validation,Jsp,Struts2,我正在研究struts的fielderror标记,并想知道是否有可能根据是否存在任何验证错误在页面上有条件地显示某些元素。我想做这样的事情(目前做不到我想要的): 字段1 字段2 字段2 我希望仅当param标记引用的某个字段无效时,锚标记才会显示。换句话说,如果这个fielderror块中有无效的内容,我想显示一些HTML。按照上面的编码方式,锚定标记始终显示 我想我当然可以用jQuery实现这一点,但我想知道是否有一种方法可以在Struts中实现这一点,而我可能忽略了这一点。我尝试过查看

我正在研究struts的fielderror标记,并想知道是否有可能根据是否存在任何验证错误在页面上有条件地显示某些元素。我想做这样的事情(目前做不到我想要的):


字段1
字段2
字段2
我希望仅当param标记引用的某个字段无效时,锚标记才会显示。换句话说,如果这个fielderror块中有无效的内容,我想显示一些HTML。按照上面的编码方式,锚定标记始终显示

我想我当然可以用jQuery实现这一点,但我想知道是否有一种方法可以在Struts中实现这一点,而我可能忽略了这一点。我尝试过查看标签和标题属性之类的内容,但似乎没有任何效果

提前谢谢


~j

没有现成的东西,至少不像你想要的那样

就我个人而言,我发现您的构造非常违反直觉:它不像读取的那样执行/渲染

有几个选项:手动执行,创建标记执行,或者在视图外部执行。所有这些都依赖于使用
ValidationAware.getFieldErrors()
获取映射并执行一些最小的逻辑

手动方法将使用
检查每个字段是否存在
字段错误['fieldName']
。包装在一个简单的基于JSP的自定义标记中会产生如下结果:

<if:fieldErrors for='field1, field2, field3'>
    <a ...>
</if:fieldErrors>


IMO用Java做的大部分工作更干净,更容易测试。这可能意味着要完成操作(或实用程序)中的所有工作,并且只向视图公开一个标志,或者使用基于JSP的瘦标记来调用实用程序。无论哪种方式,在容器外部进行测试都更容易,并且可以删除不适当的视图逻辑。

+1服务器端逻辑处理比污染视图更合适。很抱歉,我不完全理解您的建议。不幸的是,我不知道如何使用自定义标记,也不知道如何使用getFieldErrors()方法。您提到要使用
,但是您的示例使用了
。你能详细说明一下它是如何工作的吗?或者我可以看一些文档来更好地理解这一点吗?@jacosta的s:if标记用于手动检查字段错误映射。有关如何使用方法,请参阅API文档。if:fieldErrors是一个假设的自定义标记,它将封装功能,以避免主线JSP中出现大量逻辑。在服务器端完成这一切,并且只公开一个布尔值,这将使大部分的工作消失。@jacosta没问题;我可能应该以更好的方式分解这些例子。很抱歉给你带来了困惑。
<if:fieldErrors for='field1, field2, field3'>
    <a ...>
</if:fieldErrors>