gpt4 book ai didi

tomcat - 如何验证Struts2中的单选按钮

转载 作者:行者123 更新时间:2023-11-28 23:44:18 25 4
gpt4 key购买 nike

我在 Struts2 应用程序的表单中有一个单选按钮。我可以验证文本框字段,但我不能对单选按钮(必须选中一个)和复选框列表(至少必须选中一个)执行此操作。

我关注了一些讲述该主题的页面,但没有一个解决方案有效。

最后我在 XML 文件中有了这个:

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

任何帮助将不胜感激。

添加:

这是 Action 类:(如果不存在与验证相关的代码是否重要?)

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package agenda;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;

/**
*
* @author Jaime
*/
public class ProfileAction {

private String username;
private String password;
private String nombres;
private String apellidopaterno;
private String apellidomaterno;
private String fechanacimiento;
private String direccion;
private String comuna;
private String telefonofijo;
private String telefonomovil;
private String email;
private String sexo;
private String[] subscripcion;

public ProfileAction() {
}

/**
*
* @return @throws Exception
*/
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
String usuario = (String) session.getAttribute("id");
if (usuario != null && !usuario.equals("") && !usuario.equals("0")) {
return "success";
} else {
return "error";
}
}

/**
* Muestra el formulario de registro de cliente
*
* @return
* @throws Exception
*/
public String register() throws Exception {
return "success";
}

/**
* @return the username
*/
public String getUsername() {
return username;
}

/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}

/**
* @return the password
*/
public String getPassword() {
return password;
}

/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}

/**
* @return the nombres
*/
public String getNombres() {
return nombres;
}

/**
* @param nombres the nombres to set
*/
public void setNombres(String nombres) {
this.nombres = nombres;
}

/**
* @return the apellidopaterno
*/
public String getApellidopaterno() {
return apellidopaterno;
}

/**
* @param apellidopaterno the apellidopaterno to set
*/
public void setApellidopaterno(String apellidopaterno) {
this.apellidopaterno = apellidopaterno;
}

/**
* @return the apellidomaterno
*/
public String getApellidomaterno() {
return apellidomaterno;
}

/**
* @param apellidomaterno the apellidomaterno to set
*/
public void setApellidomaterno(String apellidomaterno) {
this.apellidomaterno = apellidomaterno;
}

/**
* @return the fechanacimiento
*/
public String getFechanacimiento() {
return fechanacimiento;
}

/**
* @param fechanacimiento the fechanacimiento to set
*/
public void setFechanacimiento(String fechanacimiento) {
this.fechanacimiento = fechanacimiento;
}

/**
* @return the direccion
*/
public String getDireccion() {
return direccion;
}

/**
* @param direccion the direccion to set
*/
public void setDireccion(String direccion) {
this.direccion = direccion;
}

/**
* @return the comuna
*/
public String getComuna() {
return comuna;
}

/**
* @param comuna the comuna to set
*/
public void setComuna(String comuna) {
this.comuna = comuna;
}

/**
* @return the telefonofijo
*/
public String getTelefonofijo() {
return telefonofijo;
}

/**
* @param telefonofijo the telefonofijo to set
*/
public void setTelefonofijo(String telefonofijo) {
this.telefonofijo = telefonofijo;
}

/**
* @return the telefonomovil
*/
public String getTelefonomovil() {
return telefonomovil;
}

/**
* @param telefonomovil the telefonomovil to set
*/
public void setTelefonomovil(String telefonomovil) {
this.telefonomovil = telefonomovil;
}

/**
* @return the email
*/
public String getEmail() {
return email;
}

/**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
}

/**
* @return the sexo
*/
public String getSexo() {
return sexo;
}

/**
* @param sexo the sexo to set
*/
public void setSexo(String sexo) {
this.sexo = sexo;
}

/**
* @return the subscripcion
*/
public String[] getSubscripcion() {
return subscripcion;
}

/**
* @param subscripcion the subscripcion to set
*/
public void setSubscripcion(String[] subscripcion) {
this.subscripcion = subscripcion;
}
}

这是 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>

这是配置 XML 文件的一部分:

    <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>

“注册”操作是入口点(表单),如该 URL 所示:http://domain.cl:8080/AgendaPlus/registro

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

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Requerido</message>
</field-validator>
<field-validator type="rutValidator">
<param name="trim">true</param>
<message key="errors.short_invalid" />
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>*</message>
</field-validator>
</field>
<field name="nombres">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>*</message>
</field-validator>
</field>
<field name="apellidopaterno">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>*</message>
</field-validator>
</field>
<field name="fechanacimiento">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>*</message>
</field-validator>
</field>
<field name="comuna">
<field-validator type="int">
<param name="min">1</param>
<message>*</message>
</field-validator>
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>*</message>
</field-validator>
</field>
<field name="telefonofijo">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>*</message>
</field-validator>
</field>
<field name="telefonomovil">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>*</message>
</field-validator>
</field>
<field name="email">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>*</message>
</field-validator>
<field-validator type="email">
<param name="trim">true</param>
<message key="errors.short_invalid" />
</field-validator>
</field>
<field name="sexo">
<field-validator type="required">
<param name="trim">true</param>
<message>*</message>
</field-validator>
</field>
<field name="subscripcion">
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[#subscripcion.size() > 0]]></param>
<message>al menos uno</message>
</field-validator>
</field>
</validators>

如您所见,validation.xml 文件不同于 Struts2 教程中的大多数 xml,即使我也在使用 Struts2。但是这个 XML 文件至少适用于除我的自定义验证器、单选按钮和复选框列表之外的所有字段。使用其他教程中的 validation.xml 时,不起作用。

最好的问候,

谢谢海梅

最佳答案

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

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

对于“至少一个”条件,您可以使用 fieldexpression验证器。

更新

由于您的订阅 是数组,您需要使用length 变量而不是size 方法,并且没有# 在它前面。

<field name="subscripcion">
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[subscripcion.length > 0]]></param>
<message>al menos uno</message>
</field-validator>
</field>

关于tomcat - 如何验证Struts2中的单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16431338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com