Tomcat 如何验证Struts2中的单选按钮

Tomcat 如何验证Struts2中的单选按钮,tomcat,struts2,Tomcat,Struts2,我在Struts2应用程序的表单中有一个单选按钮。我可以验证文本框字段,但对于单选按钮(必须选中一个)和复选框列表(至少必须选中一个)我无法验证 我读了一些关于这个主题的文章,但是没有一个解决方案是有效的 最后,我在XML文件中有以下内容: <field name="sexo"> <field-validator type="requiredstring"> <param name="trim">true</param>

我在Struts2应用程序的表单中有一个单选按钮。我可以验证文本框字段,但对于单选按钮(必须选中一个)和复选框列表(至少必须选中一个)我无法验证

我读了一些关于这个主题的文章,但是没有一个解决方案是有效的

最后,我在XML文件中有以下内容:

<field name="sexo">
    <field-validator type="requiredstring">
        <param name="trim">true</param>
        <message>*</message>
    </field-validator>
</field>    
    <action name="registro" class="agenda.ProfileAction" method="register">
        <result name="success" type="tiles">/register.tiles</result>
        <result name="input" type="tiles">/register.tiles</result>
    </action>        

    <action name="proceso_registro" class="agenda.ProfileAction" method="register">
        <interceptor-ref name="profiling">
            <param name="profilingKey">profilingKey</param>
        </interceptor-ref>            
        <interceptor-ref name="jsonValidationWorkflowStack"/>            
        <result name="success" type="tiles">/register.success.tiles</result>
        <result name="input" type="tiles">/register.tiles</result>
    </action>        
这是JSP文件:

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

<script src="js/jquery/jquery.maskedinput.js" type="text/javascript"></script>
<script src="js/jquery/jquery.selectbox-0.2.js" type="text/javascript"></script>

<div id="register">
    <ul><li><a href="#frm_registro"><span><s:text name="profile.register" /></span></a></li></ul>
    <div id="frm_registro">
        <s:div id="avisoError"><s:text name="profile.requiredtext" /></s:div>
        <s:form id="registro"
                action="proceso_registro" theme="css_xhtml" validate="true">
            <s:textfield name="username" key="profile.rut" labelposition="left" maxlength="50" />
            <s:password name="password" key="profile.password" labelposition="left" maxlength="50" />
            <s:textfield name="nombres" key="profile.nombres" labelposition="left" maxlength="80" size="40" />
            <s:textfield name="apellidopaterno" key="profile.apellidopaterno" labelposition="left" maxlength="80" size="40" />
            <s:textfield name="apellidomaterno" key="profile.apellidomaterno" labelposition="left" maxlength="80" size="40" />
            <s:textfield name="fechanacimiento" key="profile.fechanacimiento" labelposition="left" />
            <s:textfield name="direccion" key="profile.direccion" labelposition="left" maxlength="80" size="40" />
            <s:select name="comuna" key="profile.comuna" labelposition="left" list="#{'1':'Santiago', '2':'Huechuraba'}" headerValue="-= Seleccione Comuna =-  " headerKey="" />
            <s:textfield name="telefonofijo" key="profile.telefonofijo" labelposition="left" maxlength="30" size="30" />
            <s:textfield name="telefonomovil" key="profile.telefonomovil" labelposition="left" maxlength="30" size="30" />
            <s:textfield name="email" key="profile.email" labelposition="left" maxlength="30" size="30" />
            <s:radio name="sexo" key="profile.sexo" labelposition="left" list="#{'M':'Masculino', 'F':'Femenino'}" />
            <s:checkboxlist name="subscripcion" key="profile.subscripcion" labelposition="left" list="#{'T':'Teléfono', 'E':'E-mail', 'M':'Mensaje de Texto'}" value="T" />

            <s:submit id="boton_registro" align="left" cssClass="send" value="Registrarse" />
        </s:form>
    </div>
</div>

<script>
    $( "#register" ).tabs();
    $( "#boton_registro" ).button();
    $( "#registro_fechanacimiento" ).datepicker({
        dateFormat: "dd/mm/yy", 
        showOn: "both", 
        changeYear: true,
        changeMonth: true,
        buttonImage: "images/datepicker_icon.png",
        buttonImageOnly: true,
        buttonText: "<s:text name="AgendaPlus.choosedate" />"});
    $( "#registro_fechanacimiento" ).mask("99/99/9999");                                             
    $.mask.definitions['~']='[0-9kK]';
    $( "#registro_username" ).mask("99.999.999-~");
    $( "#registro_comuna" ).selectbox({
        effect: "fade"
    });    
    $( "#registro_telefonofijo" ).mask("(99) 9999 9999");                                             
    $( "#registro_telefonomovil" ).mask("(09) 9999 9999");                                             
</script>

    • $(“#寄存器”).tabs(); $(“#boton_registro”).button(); $(“#registro_fechanacimiento”).日期选择器({ 日期格式:“日/月/年”, showOn:“两者”, 变化年:是的, 变化月:对, buttonImage:“images/datepicker_icon.png”, buttonImageOnly:正确, 按钮文本:“}”; $(“registro_fechanacimiento”).mask(“99/99/9999”); $.mask.definitions['~']='[0-9kK]'; $(“#注册用户名”).mask(“99.999.999-~”; $(“#注册公司”)。选择框({ 效果:“褪色” }); 美元(“#registro_telefonofijo”).面具(“(99)9999999”); $(“(09)9999999”);
这是配置XML文件的一部分:

<field name="sexo">
    <field-validator type="requiredstring">
        <param name="trim">true</param>
        <message>*</message>
    </field-validator>
</field>    
    <action name="registro" class="agenda.ProfileAction" method="register">
        <result name="success" type="tiles">/register.tiles</result>
        <result name="input" type="tiles">/register.tiles</result>
    </action>        

    <action name="proceso_registro" class="agenda.ProfileAction" method="register">
        <interceptor-ref name="profiling">
            <param name="profilingKey">profilingKey</param>
        </interceptor-ref>            
        <interceptor-ref name="jsonValidationWorkflowStack"/>            
        <result name="success" type="tiles">/register.success.tiles</result>
        <result name="input" type="tiles">/register.tiles</result>
    </action>        

最后,这是整个验证文件(ProfileAction validation.xml)


真的
雷凯里多
真的
真的
*
真的
*
真的
*
真的
*
1.
*
真的
*
真的
*
真的
*
真的
*
真的
真的
*
0]]>
梅诺斯乌诺酒店
如您所见,validation.xml文件与Struts2教程中的大多数xml不同,即使我也在使用Struts2。但这个XML文件至少适用于所有字段,但不适用于我的自定义验证器、单选按钮和复选框列表。当使用其他教程中的validation.xml时,不会产生任何效果

致以最良好的祝愿

谢谢
Jaime

您需要使用
required
验证器,而不是
requiredstring
required
验证器检查指定字段是否为空

<field name="sexo">
    <field-validator type="required">
        <param name="trim">true</param>
        <message>*</message>
    </field-validator>
</field>

可能重复的是。。。它是重复的,但是我已经阅读了那里的解决方案,我遵循了这个例子,但它不起作用。它不会验证任何东西,而我的实现方式只验证单选按钮和复选框。您发布的消息链接中指向的带有教程的链接对validator.XML文件使用了非常独特的XML语法。@jstuardo:您可以发布您的操作和JSP页面吗?我已将代码添加到问题中。谢谢,你好。。对于收音机来说,它也不起作用。。。。我定义了以下内容:。对于checkboxlist,我有一个表达式:0]]>其中#subscription定义为,但它不起作用。@jstuardo:更新了我的答案。对于您来说,
requiredstring
也适用于单选按钮。
<field name="subscripcion">
    <field-validator type="fieldexpression">
        <param name="expression"><![CDATA[subscripcion.length > 0]]></param>
        <message>al menos uno</message>
    </field-validator>
</field>