【发布时间】:2015-09-29 15:08:28
【问题描述】:
这就是我所做的 我创建了一个jsp页面 持卡人
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML>
<%
String client = (String) request.getAttribute("clientId");
%>
<html>
<head>
<style type="text/css">
h3 {
font-family: Calibri;
font-size: 22pt;
font-style: normal;
font-weight: bold;
color: SlateBlue;
text-align: center;
text-decoration: underline
}
table {
font-family: Calibri;
color: white;
font-size: 11pt;
font-style: normal;
text-align:;
background-color: SlateBlue;
border-collapse: collapse;
border: 2px solid navy;
text-align:;
}
table.inner {
border: 0px
}
table {
margin: 0 auto;
}
</style>
<script type="text/javascript">
function clear()
{
document.getElementsByName('custIdNum')[0].value = "";
document.getElementsByName('passport')[0].value = "";
document.getElementsByName('country')[0].value = "";
document.getElementsByName('firstName')[0].value = "";
document.getElementsByName('middleName')[0].value = "";
document.getElementsByName('lastName')[0].value = "";
document.getElementsByName('dob')[0].value = "";
document.getElementsByName('officeNo')[0].value = "";
document.getElementsByName('mobileNo')[0].value = "";
document.getElementsByName('homeNo')[0].value = "";
document.getElementsByName('email')[0].value = "";
document.getElementsByName('postalId')[0].value = "";
document.getElementsByName('address')[0].value = "";
document.getElementsByName('state')[0].value = "";
document.getElementsByName('city')[0].value = "";
document.getElementsByName('clientNo')[0].value = "";
}
function changeStyle() {
var v1 ="<%=client%>";
if (!(v1 == "null")) {
document.getElementsByName('clientNo')[0].value = v1;
alert("client " + v1 + " registered successfully");
}
}
</script>
</head>
<body onload="changeStyle();">
<h3>Card Holder Details</h3>
<s:actionerror/>
<s:form action="registerClient">
<s:div class="table">
<tr><td><s:textfield name="clientNo" label="CLIENT ID" /></td></tr>
<s:textfield name="custIdNum" label="CUSTOMER ID NUMBER" />
<s:textfield name="passport" label="PASSPORT NUMBER" />
<s:select name="country" label="NATIONALITY"
list="{'BOTSWANA','NIGERIA','KENYA','S AFRICA','ZIMBABWE'}" />
<s:textfield name="firstName" label="FIRST NAME" />
<s:textfield name="middleName" label="MIDDLE NAME" />
<s:textfield name="lastName" label="LAST NAME" />
<s:textfield name="dob" label="BIRTHDAY" />
<s:radio list="{'male','female'}" name="gender" label="GENDER"></s:radio>
<s:textfield name="officeNo" label="OFFICE NUMBER" />
<s:textfield name="mobileNo" label="MOBILE NUMBER" />
<s:textfield name="homeNo" label="HOME NUMBER" />
<s:textfield name="email" label="EMAIL ID" />
<s:textfield name="postalId" label="POSTAL CODE" />
<s:textfield name="city" label="CITY" />
<s:textarea name="address" label="ADDRESS" />
<s:textfield name="state" label="STATE" />
<tr>
<td colspan="2"><s:submit value="submit" theme="simple"/></td>
<td><s:submit type="button" onclick="clear();return false;"
value="Reset" /></td>
</tr>
</s:div>
</s:form>
</body>
</html>
这是我的 xml 验证文件
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="custIdNum">
<field-validator type="requiredstring">
<message>Customer ID is required.</message>
</field-validator>
</field>
<field name="passport">
<field-validator type="requiredstring">
<message>Passport Number is required.</message>
</field-validator>
</field>
<field name="firstName">
<field-validator type="requiredstring">
<message>Please Enter First Name.</message>
</field-validator>
</field>
<field name="lastName">
<field-validator type="requiredstring">
<message>Please Enter Last Name.</message>
</field-validator>
</field>
<field name="gender">
<field-validator type="requiredstring">
<message>Please select a gender</message>
</field-validator>
</field>
<field name="officeNo">
<field-validator type="requiredstring">
<message>Please Enter Office number.</message>
</field-validator>
</field>
<field name="mobileNo">
<field-validator type="requiredstring">
<message>Please Enter personal mobile number</message>
</field-validator>
</field>
<field name="postalId">
<field-validator type="requiredstring">
<message>Please Enter Postal code</message>
</field-validator>
</field>
<field name="email">
<field-validator type="email">
<message>email required</message>
</field-validator>
</field>
</validators>
当我运行此页面时,我在字段上收到错误消息,但我想在每个字段旁边显示它们。 请帮忙。
这是我的动作课
package com.struts.lifewardscard;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import oracle.jdbc.driver.OracleTypes;
import com.struts.lifewardscard.CardHolderForm;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class CardHolderRegistration extends ActionSupport implements ModelDriven{
CardHolderForm cardform=new CardHolderForm();
public String execute() throws Exception{
String clientId=null;
HttpServletRequest request = ServletActionContext.getRequest();
clientId=saveCardHolderDetails();
request.setAttribute("clientId", clientId);
return "success";
}
@Override
public Object getModel() {
// TODO Auto-generated method stub
return cardform;
}
这是验证后生成的示例代码
<tr errorFor="registerClient_custIdNum">
<td align="center" valign="top" colspan="2"><span class="errorMessage">Customer ID is required.</span></td>
</tr>
<tr>
<td class="tdLabel"><label for="registerClient_custIdNum" class="errorLabel">CUSTOMER ID NUMBER:</label></td>
<td
><input type="text" name="custIdNum" value="" id="registerClient_custIdNum"/></td>
</tr>
我希望错误显示消息与输入行位于同一行 不在新行中。
【问题讨论】:
-
除非您在
struts.xml中指定,否则错误消息应该会自动显示。 -
请编辑您的问题,为一个字段添加 GENERATED html(来自 VIEW SOURCE)的示例,这是错误消息。另请注意,这是 FIELD 错误,而不是操作错误,并且在默认的 XHTML 主题中,它们已经放置在“正确”的位置。但是,如果你想改变它,你应该能够单独使用 CSS 来完成,否则可以使用 SIMPLE 主题并自己编写代码
-
它们显示良好,但在字段行上方我希望它们位于字段的右侧@Roman C
-
@AndreaLigios 你说我可以单独使用 CSS 来做到这一点,你能给我一个例子吗?
-
@AshokOgirala 当您在表单输入字段上应用主题时,freemarker 将使用此主题来选择与您所需标记相对应的模板。您应该阅读如何在 struts 站点上创建自定义主题。
标签: jsp struts2 xml-validation model-driven