- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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
验证器而不是requiredstring
。 required
验证器检查指定字段是否不为空。
<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/
我希望在某些环境中使用用户名和密码保护某个角色,但在其他环境中甚至不需要提示。如果我在 tomcat web.xml 中有一个 auth-constraint,我可以创建一个具有“匿名”访问权限的角色
我正在使用 Tomcat jmxproxy 和状态来监视 Web 应用程序,但是 jmxproxy 页面中有很多无用的信息,并且其中没有任何信息,例如事件连接数。有谁知道如何过滤 jmxproxy 页
是否可以通过执行 JSP 来重启 Tomcat6? 这是因为我想通过使用网络服务器远程部署应用程序的更改。 部署脚本是用 bash 编写的,它从 svn 中 check out 最新版本,然后将其打包
我有一个包含 2 个子项目(后端和 ui)的 gradle 项目。 Ui由gradle tomcatRunWar完美启动.后端有我们在生产地点的配置描述符/conf/Catalina/localhos
发现 XAMPP 控件认为 tomcat 正在运行但无法停止它的问题。 在catalina下的tomcat logs目录下可以找到如下错误 “严重:无法联系 localhost:8005。Tomcat
PuppetLabs 在 PuppetForge 上有一个模块,用于部署 Tomcat 及其配置。 https://forge.puppet.com/puppetlabs/tomcat Tomcat
我有一个部署到 Tomcat 实例中的 Web 应用程序。我希望能够将 tomcat 配置为在 Tomcat 本身启动时不自动启动该应用程序。但是,我确实希望启动 Tomcat 管理器,以便我可以根据
操作系统:windows XP。 我已经安装了 Tomcat 7.0.25,文件夹“manager”位于 webapps 文件夹中。 我已阅读此处的文档:http://tomcat.apache.or
我们在 server.xml 文件中启用了以下访问日志模式 pattern="%h %H %l %u %t "%r" %s %b location: %{location}o"。 有人可以帮助理解模式
我最近开始使用 tomcat,我有一个关于 Tomcat 请求路由/映射的查询。 假设我在 tomcat 服务器中部署了四个应用程序 A、B、C 和 D,当有请求到来时,tomcat 如何知道要调用哪
我在我的计算机上使用 Tomcat,它可以通过端口 8080 访问。我想要的是我应该能够使用我的计算机的 IP 地址访问我的 Tomcat 服务器页面。我以前读过很多主题,但找不到一个可以帮助我的主题
我有一个 tomcat 7 服务器和一个 postgreSQL 9.0 数据库。我用它来为地理网络元数据编辑器设置开发环境。一切都是根据 geonetwork 网站教程设置的。我在将服务器与数据库连接
我的服务器有 物理 ip 和 虚拟 ip 由网络管理员设置。在我安装的服务器内部 Apache tomcat 7.0.29并创建一个网络应用程序。当我运行 wget http://:8080/xxx或
我有多个应用程序在不同的端口上运行(tomcat 实例) 都有相同的CATALINA_HOME 目前我必须在所有实例中部署和安装psi 探针,并在不同的窗口中分别监控每个端口。 我如何在一个单一的探测
based on this question 我尝试将 Tomcat 控制台输出重定向到一个文本文件,它对我的 Web 应用程序工作正常,但问题是,每次 Tomcat 启动时它都会被覆盖。我需要创
我需要阐明我的问题。问题是:有什么方法可以影响 Tomcat 为特定部署的应用程序分配多少堆内存?更多详细信息 - 我如何为已部署的应用程序设置特定的 Java 选项(考虑我想为每个应用程序设置特殊的
应用服务器内部的类加载机制是开发人员常见的困惑来源;这就是为什么我想问一个关于 tomcat 7 服务器中这个机制的问题:我有一个网络应用程序 sample.war,它依赖于 jgroups 库, 放
尝试将嵌入式 Tomcat 5 迁移到嵌入式 Tomcat 7。在启动过程中获取 NPE。 我扩展了 Embedded 类并按照正确的顺序执行所有建议的初始化。 NPE 发生在这里: Caused b
我可以使用随附的 start.sh 文件启动 tomcat,但是是否有任何参数可以用来执行以下操作: 在指定的根目录启动 Tomcat 服务 强制 Tomcat 在浏览器中拉出指定的主页 谢谢 最佳答
我在两台 diff 机器 tomcat 服务器上做一个简单的集群配置。每次我启动 tomcat 时,我都会收到一个错误,就像集群组中没有事件成员一样。我正在附加集群配置
我是一名优秀的程序员,十分优秀!