入力画面で3レコード分入力できるようにしているので、
確認画面でも3レコード分テーブルを用意している状態で、
<%=exObject.format(Long.parseLong(aryPrices[0]))%>
3レコード分全部値が入っている場合は問題なく動作するのですが、
1or2レコードの際にエラーになってしまいます。
そこで、最大3レコードだと分かっているので、
for分で3周させる中でif分で価格に値が入ってなければ飛ばすという
ようにしたいのですがうまくいきません。
どうしたらよいでしょうか?
よろしくお願いいたします。
例外
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on tokens, delete these tokens
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on token(s), misplaced construct(s)
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on token ">", delete this token
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on tokens, delete these tokens
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error, insert ";" to complete BlockStatements
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
原因
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on tokens, delete these tokens
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on token(s), misplaced construct(s)
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on token ">", delete this token
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on tokens, delete these tokens
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error, insert ";" to complete BlockStatements
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:409)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%
request.setCharacterEncoding("Windows-31J");
String[] aryCo_Items = request.getParameterValues("Co_Item");
String[] aryItem_Names = request.getParameterValues("Item_Name");
String[] aryPrices = request.getParameterValues("Price");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
</HEAD><BODY>
<%NumberFormat exObject = NumberFormat.getNumberInstance();%>
<H1>名称テーブル登録</H1>
<FORM ACTION="Name_Insert.jsp" METHOD="post">
<DIV CLASS="section">
<TABLE>
<TR><TH>アイテムコード</TH><TH>アイテム名</TH><TH>単価</TH></TR>
<%for(int i=0;i<3;i++){
if(aryPrices[i]!=null){>%
<TR><TD CLASS="C3"><%=aryCo_Items[i]%></TD><TD CLASS="C3"><%=aryItem_Names[i]%></TD><TD CLASS="C4"><%=exObject.format(Long.parseLong(aryPrices[i]))%></TD></TR>
<%}
}%>
</TABLE>
<INPUT TYPE="hidden" NAME="Co_Item" VALUE="<%=aryCo_Items[0]%>">
<INPUT TYPE="hidden" NAME="Item_Name" VALUE="<%=aryItem_Names[0]%>">
<INPUT TYPE="hidden" NAME="Price" VALUE="<%=aryPrices[0]%>">
<INPUT TYPE="hidden" NAME="Co_Item" VALUE="<%=aryCo_Items[1]%>">
<INPUT TYPE="hidden" NAME="Item_Name" VALUE="<%=aryItem_Names[1]%>">
<INPUT TYPE="hidden" NAME="Price" VALUE="<%=aryPrices[1]%>">
<INPUT TYPE="hidden" NAME="Co_Item" VALUE="<%=aryCo_Items[2]%>">
<INPUT TYPE="hidden" NAME="Item_Name" VALUE="<%=aryItem_Names[2]%>">
<INPUT TYPE="hidden" NAME="Price" VALUE="<%=aryPrices[2]%>">
<INPUT TYPE="submit" VALUE="登 録">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Name_Insert_Form.jsp'">
</FORM>
</DIV>
</BODY></HTML>
確認画面でも3レコード分テーブルを用意している状態で、
<%=exObject.format(Long.parseLong(aryPrices[0]))%>
3レコード分全部値が入っている場合は問題なく動作するのですが、
1or2レコードの際にエラーになってしまいます。
そこで、最大3レコードだと分かっているので、
for分で3周させる中でif分で価格に値が入ってなければ飛ばすという
ようにしたいのですがうまくいきません。
どうしたらよいでしょうか?
よろしくお願いいたします。
例外
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on tokens, delete these tokens
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on token(s), misplaced construct(s)
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on token ">", delete this token
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on tokens, delete these tokens
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error, insert ";" to complete BlockStatements
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
原因
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on tokens, delete these tokens
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on token(s), misplaced construct(s)
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on token ">", delete this token
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error on tokens, delete these tokens
JSPファイル: /Name_Insert_Confirm.jsp の中の23行目でエラーが発生しました
生成されたサーブレットのエラーです:
Syntax error, insert ";" to complete BlockStatements
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:409)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%
request.setCharacterEncoding("Windows-31J");
String[] aryCo_Items = request.getParameterValues("Co_Item");
String[] aryItem_Names = request.getParameterValues("Item_Name");
String[] aryPrices = request.getParameterValues("Price");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
</HEAD><BODY>
<%NumberFormat exObject = NumberFormat.getNumberInstance();%>
<H1>名称テーブル登録</H1>
<FORM ACTION="Name_Insert.jsp" METHOD="post">
<DIV CLASS="section">
<TABLE>
<TR><TH>アイテムコード</TH><TH>アイテム名</TH><TH>単価</TH></TR>
<%for(int i=0;i<3;i++){
if(aryPrices[i]!=null){>%
<TR><TD CLASS="C3"><%=aryCo_Items[i]%></TD><TD CLASS="C3"><%=aryItem_Names[i]%></TD><TD CLASS="C4"><%=exObject.format(Long.parseLong(aryPrices[i]))%></TD></TR>
<%}
}%>
</TABLE>
<INPUT TYPE="hidden" NAME="Co_Item" VALUE="<%=aryCo_Items[0]%>">
<INPUT TYPE="hidden" NAME="Item_Name" VALUE="<%=aryItem_Names[0]%>">
<INPUT TYPE="hidden" NAME="Price" VALUE="<%=aryPrices[0]%>">
<INPUT TYPE="hidden" NAME="Co_Item" VALUE="<%=aryCo_Items[1]%>">
<INPUT TYPE="hidden" NAME="Item_Name" VALUE="<%=aryItem_Names[1]%>">
<INPUT TYPE="hidden" NAME="Price" VALUE="<%=aryPrices[1]%>">
<INPUT TYPE="hidden" NAME="Co_Item" VALUE="<%=aryCo_Items[2]%>">
<INPUT TYPE="hidden" NAME="Item_Name" VALUE="<%=aryItem_Names[2]%>">
<INPUT TYPE="hidden" NAME="Price" VALUE="<%=aryPrices[2]%>">
<INPUT TYPE="submit" VALUE="登 録">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Name_Insert_Form.jsp'">
</FORM>
</DIV>
</BODY></HTML>
投稿:ばく[owada]/2006年 10月 11日 17時 14分
/更新:2006年 10月 11日 17時 14分
RE:RE:
by 竹形 誠司[takegata]
23行目でエラーが発生しました
とあるので、とりあえず23行目あたりに間違いが無いかを見ましょう。 if(aryPrices[i]!=null){>%
ここですね。
投稿:竹形 誠司[takegata]/2006年 10月 12日 01時 48分
/更新:2006年 10月 12日 01時 49分
おはようございます。
>と%の順番が逆なのと、
(aryPrices[i]!=null)を以前教えていただいた(!aryPrices[i].equals(""))煮変更することで、エラーが解消できました。
ありがとうございます。
>と%の順番が逆なのと、
(aryPrices[i]!=null)を以前教えていただいた(!aryPrices[i].equals(""))煮変更することで、エラーが解消できました。
ありがとうございます。
投稿:ばく[owada]/2006年 10月 12日 08時 59分
/更新:2006年 10月 12日 08時 59分
以前UPDATEのところで対象行が、1レコードか複数レコードかで
処理内容が変わるというのを教えてもらったのですが、
現在作成しているものにそれが入っていないことにより1レコードのみの時の修正が出来ていないことに気が付きました。
そこで、教えていただいたものを埋め込んだのですが、
1レコードか複数レコードかを切り分けるif文で
typeof document.form1.Item_Name.lengthにundefinedが入っているのは確認できているのですが、その後の入力チェックが行われません。
どうしたら良いでしょうか?
よろしくお願いします。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%
request.setCharacterEncoding("WIndows-31J");
String[] aryCo_Items = request.getParameterValues("Co_Item");
String[] aryItem_Names = request.getParameterValues("Item_Name");
String[] aryPrices = request.getParameterValues("Price");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
<SCRIPT TYPE="text/javascript"><!--
function check(){
alert(typeof document.form1.Co_Item.length);//typeof document.form1.Co_Item.lengthの確認
if((typeof document.form1.Item_Name.length)=='undefined'){//データが1行の場合
var a=document.form1.Item_Name[0].value;
var b=document.form1.Price[0].value;
if(a==""){
alert((i+1)+"レコード目のアイテム名が空欄です。");
document.form1.Item_Name[0].focus();
return false;
}else if(b==""){
alert((i+1)+"レコード目の単価が空欄です。");
document.form1.Price[0].focus();
return false;
}else if(isNaN(b)){
alert((i+1)+"レコード目の単価が半角数字ではありません。");
document.form1.Price[0].focus();
return false;
}
}else{//データが複数行の場合
for(i=0;i<<%=aryCo_Items.length%>;i++){
var a1=document.form1.Item_Name[i].value;
var b1=document.form1.Price[i].value;
if(a1==""){
alert((i+1)+"レコード目のアイテム名が空欄です。");
document.form1.Item_Name[i].focus();
return false;
}else if(b1==""){
alert((i+1)+"レコード目の単価が空欄です。");
document.form1.Price[i].focus();
return false;
}else if(isNaN(b1)){
alert((i+1)+"レコード目の単価が半角数字ではありません。");
document.form1.Price[i].focus();
return false;
}
}
}
}
</SCRIPT>
</HEAD><BODY>
<H1>名称テーブル修正</H1>
<FORM NAME="form1" ACTION="Name_Update.jsp" METHOD="post" ONSUBMIT="return check();">
<DIV CLASS="section">
<TABLE>
<TR><TH>アイテムコード</TH><TH>アイテム名</TH><TH>単価</TH></TR>
<%for(int i=0;i<aryCo_Items.length;i++){
if(request.getParameter("c1_"+i)!=null){
/* c1_0, c1_1, c1_2, ...がnullでない場合に以下を実行 */
%>
<TR>
<TD CLASS="C3"><%=aryCo_Items[i]%><INPUT TYPE="hidden" NAME="Co_Item" MAXLENGTH="4" VALUE="<%=aryCo_Items[i]%>"></TD>
<TD><INPUT TYPE="text" NAME="Item_Name" MAXLENGTH="10" VALUE="<%=aryItem_Names[i]%>"></TD>
<TD><INPUT TYPE="text" NAME="Price" MAXLENGTH="7" VALUE="<%=aryPrices[i]%>"></TD>
</TR>
<%}
}%>
</TABLE></DIV>
<DIV CLASS="section">
<INPUT TYPE="submit" VALUE="修 正">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Name_Update_Form.jsp'">
</FOME>
</DIV>
</BODY></HTML>
処理内容が変わるというのを教えてもらったのですが、
現在作成しているものにそれが入っていないことにより1レコードのみの時の修正が出来ていないことに気が付きました。
そこで、教えていただいたものを埋め込んだのですが、
1レコードか複数レコードかを切り分けるif文で
typeof document.form1.Item_Name.lengthにundefinedが入っているのは確認できているのですが、その後の入力チェックが行われません。
どうしたら良いでしょうか?
よろしくお願いします。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%
request.setCharacterEncoding("WIndows-31J");
String[] aryCo_Items = request.getParameterValues("Co_Item");
String[] aryItem_Names = request.getParameterValues("Item_Name");
String[] aryPrices = request.getParameterValues("Price");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
<SCRIPT TYPE="text/javascript"><!--
function check(){
alert(typeof document.form1.Co_Item.length);//typeof document.form1.Co_Item.lengthの確認
if((typeof document.form1.Item_Name.length)=='undefined'){//データが1行の場合
var a=document.form1.Item_Name[0].value;
var b=document.form1.Price[0].value;
if(a==""){
alert((i+1)+"レコード目のアイテム名が空欄です。");
document.form1.Item_Name[0].focus();
return false;
}else if(b==""){
alert((i+1)+"レコード目の単価が空欄です。");
document.form1.Price[0].focus();
return false;
}else if(isNaN(b)){
alert((i+1)+"レコード目の単価が半角数字ではありません。");
document.form1.Price[0].focus();
return false;
}
}else{//データが複数行の場合
for(i=0;i<<%=aryCo_Items.length%>;i++){
var a1=document.form1.Item_Name[i].value;
var b1=document.form1.Price[i].value;
if(a1==""){
alert((i+1)+"レコード目のアイテム名が空欄です。");
document.form1.Item_Name[i].focus();
return false;
}else if(b1==""){
alert((i+1)+"レコード目の単価が空欄です。");
document.form1.Price[i].focus();
return false;
}else if(isNaN(b1)){
alert((i+1)+"レコード目の単価が半角数字ではありません。");
document.form1.Price[i].focus();
return false;
}
}
}
}
</SCRIPT>
</HEAD><BODY>
<H1>名称テーブル修正</H1>
<FORM NAME="form1" ACTION="Name_Update.jsp" METHOD="post" ONSUBMIT="return check();">
<DIV CLASS="section">
<TABLE>
<TR><TH>アイテムコード</TH><TH>アイテム名</TH><TH>単価</TH></TR>
<%for(int i=0;i<aryCo_Items.length;i++){
if(request.getParameter("c1_"+i)!=null){
/* c1_0, c1_1, c1_2, ...がnullでない場合に以下を実行 */
%>
<TR>
<TD CLASS="C3"><%=aryCo_Items[i]%><INPUT TYPE="hidden" NAME="Co_Item" MAXLENGTH="4" VALUE="<%=aryCo_Items[i]%>"></TD>
<TD><INPUT TYPE="text" NAME="Item_Name" MAXLENGTH="10" VALUE="<%=aryItem_Names[i]%>"></TD>
<TD><INPUT TYPE="text" NAME="Price" MAXLENGTH="7" VALUE="<%=aryPrices[i]%>"></TD>
</TR>
<%}
}%>
</TABLE></DIV>
<DIV CLASS="section">
<INPUT TYPE="submit" VALUE="修 正">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Name_Update_Form.jsp'">
</FOME>
</DIV>
</BODY></HTML>
投稿:ばく[owada]/2006年 10月 16日 14時 51分
/更新:2006年 10月 16日 14時 51分
1行の場合なのに配列を使っていたので[0]の部分削って解決しました。
お騒がせ致しました。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%
request.setCharacterEncoding("WIndows-31J");
String[] aryCo_Items = request.getParameterValues("Co_Item");
String[] aryItem_Names = request.getParameterValues("Item_Name");
String[] aryPrices = request.getParameterValues("Price");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
<SCRIPT TYPE="text/javascript"><!--
function check(){
alert(typeof document.form1.Co_Item.length);//typeof document.form1.Co_Item.lengthの確認
if((typeof document.form1.Co_Item.length)!='number'){//データが1行の場合
var a=document.form1.Item_Name.value;
var b=document.form1.Price.value;
if(a==""){
alert("1レコード目のアイテム名が空欄です。");
document.form1.Item_Name.focus();
return false;
}else if(b==""){
alert("1レコード目の単価が空欄です。");
document.form1.Price.focus();
return false;
}else if(isNaN(b)){
alert("1レコード目の単価が半角数字ではありません。");
document.form1.Price.focus();
return false;
}
}else{//データが複数行の場合
for(i=0;i<<%=aryCo_Items.length%>;i++){
var a1=document.form1.Item_Name[i].value;
var b1=document.form1.Price[i].value;
if(a1==""){
alert((i+1)+"レコード目のアイテム名が空欄です。");
document.form1.Item_Name[i].focus();
return false;
}else if(b1==""){
alert((i+1)+"レコード目の単価が空欄です。");
document.form1.Price[i].focus();
return false;
}else if(isNaN(b1)){
alert((i+1)+"レコード目の単価が半角数字ではありません。");
document.form1.Price[i].focus();
return false;
}
}
}
}
</SCRIPT>
</HEAD><BODY>
<H1>名称テーブル修正</H1>
<FORM NAME="form1" ACTION="Name_Update.jsp" METHOD="post" ONSUBMIT="return check();">
<DIV CLASS="section">
<TABLE>
<TR><TH>アイテムコード</TH><TH>アイテム名</TH><TH>単価</TH></TR>
<%for(int i=0;i<aryCo_Items.length;i++){
if(request.getParameter("c1_"+i)!=null){
/* c1_0, c1_1, c1_2, ...がnullでない場合に以下を実行 */
%>
<TR>
<TD CLASS="C3"><%=aryCo_Items[i]%><INPUT TYPE="hidden" NAME="Co_Item" MAXLENGTH="4" VALUE="<%=aryCo_Items[i]%>"></TD>
<TD><INPUT TYPE="text" NAME="Item_Name" MAXLENGTH="10" VALUE="<%=aryItem_Names[i]%>"></TD>
<TD><INPUT TYPE="text" NAME="Price" MAXLENGTH="7" VALUE="<%=aryPrices[i]%>"></TD>
</TR>
<%}
}%>
</TABLE></DIV>
<DIV CLASS="section">
<INPUT TYPE="submit" VALUE="修 正">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Name_Update_Form.jsp'">
</FOME>
</DIV>
</BODY></HTML>
お騒がせ致しました。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%
request.setCharacterEncoding("WIndows-31J");
String[] aryCo_Items = request.getParameterValues("Co_Item");
String[] aryItem_Names = request.getParameterValues("Item_Name");
String[] aryPrices = request.getParameterValues("Price");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
<SCRIPT TYPE="text/javascript"><!--
function check(){
alert(typeof document.form1.Co_Item.length);//typeof document.form1.Co_Item.lengthの確認
if((typeof document.form1.Co_Item.length)!='number'){//データが1行の場合
var a=document.form1.Item_Name.value;
var b=document.form1.Price.value;
if(a==""){
alert("1レコード目のアイテム名が空欄です。");
document.form1.Item_Name.focus();
return false;
}else if(b==""){
alert("1レコード目の単価が空欄です。");
document.form1.Price.focus();
return false;
}else if(isNaN(b)){
alert("1レコード目の単価が半角数字ではありません。");
document.form1.Price.focus();
return false;
}
}else{//データが複数行の場合
for(i=0;i<<%=aryCo_Items.length%>;i++){
var a1=document.form1.Item_Name[i].value;
var b1=document.form1.Price[i].value;
if(a1==""){
alert((i+1)+"レコード目のアイテム名が空欄です。");
document.form1.Item_Name[i].focus();
return false;
}else if(b1==""){
alert((i+1)+"レコード目の単価が空欄です。");
document.form1.Price[i].focus();
return false;
}else if(isNaN(b1)){
alert((i+1)+"レコード目の単価が半角数字ではありません。");
document.form1.Price[i].focus();
return false;
}
}
}
}
</SCRIPT>
</HEAD><BODY>
<H1>名称テーブル修正</H1>
<FORM NAME="form1" ACTION="Name_Update.jsp" METHOD="post" ONSUBMIT="return check();">
<DIV CLASS="section">
<TABLE>
<TR><TH>アイテムコード</TH><TH>アイテム名</TH><TH>単価</TH></TR>
<%for(int i=0;i<aryCo_Items.length;i++){
if(request.getParameter("c1_"+i)!=null){
/* c1_0, c1_1, c1_2, ...がnullでない場合に以下を実行 */
%>
<TR>
<TD CLASS="C3"><%=aryCo_Items[i]%><INPUT TYPE="hidden" NAME="Co_Item" MAXLENGTH="4" VALUE="<%=aryCo_Items[i]%>"></TD>
<TD><INPUT TYPE="text" NAME="Item_Name" MAXLENGTH="10" VALUE="<%=aryItem_Names[i]%>"></TD>
<TD><INPUT TYPE="text" NAME="Price" MAXLENGTH="7" VALUE="<%=aryPrices[i]%>"></TD>
</TR>
<%}
}%>
</TABLE></DIV>
<DIV CLASS="section">
<INPUT TYPE="submit" VALUE="修 正">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Name_Update_Form.jsp'">
</FOME>
</DIV>
</BODY></HTML>
投稿:ばく[owada]/2006年 10月 16日 15時 20分
/更新:2006年 10月 16日 16時 43分
上で質問させて頂いたものとは別の表を使って同じ処理で、
alert(typeof document.form1.Co_Item.length);を表示できずに
複数レコードあった場合のみエラーチェックがされる状態になっています。
上記に上げてうまく出来ているソースと見比べたのですが、
同じ様に書いてあります。
よろしくお願いします。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%
request.setCharacterEncoding("WIndows-31J");
String[] aryCo_Items = request.getParameterValues("Co_Item");
String[] aryAmounts = request.getParameterValues("Amount");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
<SCRIPT TYPE="text/javascript"><!--
function check(){
alert(typeof document.form1.Co_Item.length);//typeof document.form1.Co_Item.lengthの確認
if((typeof document.form1.Co_Item.length)!='number'){ //データが1行の場合
var a=document.form1.Amount.value;
if(a==""){
alert("1レコード目の数量が空欄です。");
document.form1.Amount.focus();
return false;
}else if(isNaN(a)){
alert("1レコード目の数量が半角数字ではありません。");
document.form1.Amount.focus() ;
return false;
}
}else{//データが複数行の場合
for(i=0;i<<%=aryCo_Items.length%>;i++){
var a1=document.form1.Amount[i].value;
if(a1==""){
alert((i+1)+"レコード目の数量が空欄です。");
document.form1.Amount[i].focus();
return false;
}else if(isNaN(a1)){
alert((i+1)+"レコード目の数量が半角数字ではありません。");
document.form1.Amount[i].focus();
return false;
}
}
}
}
</SCRIPT>
</HEAD><BODY>
<H1>アイテムリストテーブル修正</H1>
<FORM NAME="form1" ACTION="Itemlist_Update.jsp" METHOD="post" ONSUBMIT="return check();">
<DIV CLASS="section">
<TABLE CLASS="itemlist">
<TR><TH>アイテムコード</TH><TH>数量</TH></TR>
<%for(int i=0;i<aryCo_Items.length;i++){
if(request.getParameter("c1_"+i)!=null){
/* c1_0, c1_1, c1_2, ...がnullでない場合に以下を実行 */
%>
<TR>
<TD CLASS="C3"><%=aryCo_Items[i]%><INPUT TYPE="hidden" NAME="Co_Item" MAXLENGTH="4" VALUE="<%=aryCo_Items[i]%>"></TD>
<TD CLASS="C4"><INPUT TYPE="text" NAME="Amount" MAXLENGTH="4" VALUE="<%=aryAmounts[i]%>"></TD>
</TR>
<%}
}%>
</TABLE></DIV>
<DIV CLASS="section">
<INPUT TYPE="submit" VALUE="修 正">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Itemlist_Update_Form.jsp'">
</FOME>
</DIV>
</BODY></HTML>
alert(typeof document.form1.Co_Item.length);を表示できずに
複数レコードあった場合のみエラーチェックがされる状態になっています。
上記に上げてうまく出来ているソースと見比べたのですが、
同じ様に書いてあります。
よろしくお願いします。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%
request.setCharacterEncoding("WIndows-31J");
String[] aryCo_Items = request.getParameterValues("Co_Item");
String[] aryAmounts = request.getParameterValues("Amount");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
<SCRIPT TYPE="text/javascript"><!--
function check(){
alert(typeof document.form1.Co_Item.length);//typeof document.form1.Co_Item.lengthの確認
if((typeof document.form1.Co_Item.length)!='number'){ //データが1行の場合
var a=document.form1.Amount.value;
if(a==""){
alert("1レコード目の数量が空欄です。");
document.form1.Amount.focus();
return false;
}else if(isNaN(a)){
alert("1レコード目の数量が半角数字ではありません。");
document.form1.Amount.focus() ;
return false;
}
}else{//データが複数行の場合
for(i=0;i<<%=aryCo_Items.length%>;i++){
var a1=document.form1.Amount[i].value;
if(a1==""){
alert((i+1)+"レコード目の数量が空欄です。");
document.form1.Amount[i].focus();
return false;
}else if(isNaN(a1)){
alert((i+1)+"レコード目の数量が半角数字ではありません。");
document.form1.Amount[i].focus();
return false;
}
}
}
}
</SCRIPT>
</HEAD><BODY>
<H1>アイテムリストテーブル修正</H1>
<FORM NAME="form1" ACTION="Itemlist_Update.jsp" METHOD="post" ONSUBMIT="return check();">
<DIV CLASS="section">
<TABLE CLASS="itemlist">
<TR><TH>アイテムコード</TH><TH>数量</TH></TR>
<%for(int i=0;i<aryCo_Items.length;i++){
if(request.getParameter("c1_"+i)!=null){
/* c1_0, c1_1, c1_2, ...がnullでない場合に以下を実行 */
%>
<TR>
<TD CLASS="C3"><%=aryCo_Items[i]%><INPUT TYPE="hidden" NAME="Co_Item" MAXLENGTH="4" VALUE="<%=aryCo_Items[i]%>"></TD>
<TD CLASS="C4"><INPUT TYPE="text" NAME="Amount" MAXLENGTH="4" VALUE="<%=aryAmounts[i]%>"></TD>
</TR>
<%}
}%>
</TABLE></DIV>
<DIV CLASS="section">
<INPUT TYPE="submit" VALUE="修 正">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Itemlist_Update_Form.jsp'">
</FOME>
</DIV>
</BODY></HTML>
投稿:ばく[owada]/2006年 10月 16日 16時 42分
/更新:2006年 10月 16日 16時 42分
原因がなんだったかよく分からないままなのですが、
alert(typeof document.form1.Co_Item.length);が出来るようになり
1レコードでもエラーチェックが出来るようになりました。
alert(typeof document.form1.Co_Item.length);が出来るようになり
1レコードでもエラーチェックが出来るようになりました。
投稿:ばく[owada]/2006年 10月 16日 16時 59分
/更新:2006年 10月 16日 16時 59分
function check(){ 内でFORM2のテーブルの行数を取得したいのですが、
JavaScriptのチェック自体をスルーしてしまいます。
FORM1の行数を取ることは可能でした。
FORM1では行数を取得できるのに、FORM1では行数を取得出来ないのはどうしてですか?
よろしくお願いいたします。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%@ page import="jamyto.*"%>
<%
//JDBCドライバを登録
Class.forName("com.mysql.jdbc.Driver");
//データベース接続文字列を作成
String strConn = "jdbc:mysql://localhost/Sample"
+ "?user=user1&password=password"
+ "&useUnicode=true&characterEncoding=cp932";
//コネクションオブジェクトを取得
Connection conn = DriverManager.getConnection(strConn);
//ステートメントオブジェクトを取得
Statement stmt = conn.createStatement();
//SQLコマンドを作成
String strSql = "SELECT * FROM n_items_list ";
//問い合わせを実行してリザルトセットを取得
ResultSet rs = stmt.executeQuery(strSql);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
<SCRIPT TYPE="text/javascript"><!--
function check(){
var x=0;
var len_max=document.form2.Co_Item.length; //登録できるアイテムの数
for(i=0;i<3;i++){
alert(len_max);
var a1=document.form1.Co_Item[i].value;
var b1=document.form1.Amount[i].value;
if(a1=="" && b1==""){
x=x+1;
if(x==3){
//何も入力されていません
alert("<%=ChangeMessage.getMessage("e001")%>");
document.form1.Co_Item[0].focus();
return false;
}
}else if(a1==""){
//アイテムコードが空欄です
alert("<%=ChangeMessage.getMessage("e002")%>");
document.form1.Co_Item[i].focus() ;
return false;
}else if(b1==""){
//数量が空欄です
alert("<%=ChangeMessage.getMessage("e008")%>");
document.form1.Amount[i].focus();
return false;
}else if(isNaN(a1)){
//アイテムコードは数字を入力して下さい
alert("<%=ChangeMessage.getMessage("e005")%>");
document.form1.Co_Item[i].focus();
return false;
}else if(isNaN(b1)){
//数量は数字を入力して下さい
alert("<%=ChangeMessage.getMessage("e009")%>");
document.form1.Amount[i].focus();
return false;
}
}
}
</SCRIPT>
</HEAD><BODY>
<H1>アイテムリストテーブル登録</H1>
<FORM NAME="form2" METHOD="post">
<DIV CLASS="section">
<TABLE CLASS ="itemlist">
<%="登録可能アイテム一覧"%>
<TR><TH>アイテムコード</TH><TH>アイテム名</TH></TR>
<%
while(rs.next()){%>
<TR><TD CLASS ="C3"><%=rs.getString("co_item")%></TD><TD CLASS ="C3"><%=rs.getString("item_name")%></TD></TR>
<%}
stmt.close();
conn.close();
%>
</TABLE>
</DIV>
</FORM>
<FORM NAME="form1" ACTION="Itemlist_Insert_Confirm.jsp" METHOD="post" ONSUBMIT="return check();" >
<DIV CLASS="section">
<TABLE CLASS="itemlist">
<%="登録フォーム"%>
<TR><TH>アイテムコード</TH><TH>数量</TH></TR>
<TR><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Co_Item"></TD><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Amount"></TD></TR>
<TR><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Co_Item"></TD><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Amount"></TD></TR>
<TR><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Co_Item"></TD><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Amount"></TD></TR>
</TABLE>
</DIV>
<DIV CLASS="section">
<INPUT TYPE="submit" VALUE="確 認">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Menu.jsp'">
</FORM>
</DIV>
</BODY></HTML>
JavaScriptのチェック自体をスルーしてしまいます。
FORM1の行数を取ることは可能でした。
FORM1では行数を取得できるのに、FORM1では行数を取得出来ないのはどうしてですか?
よろしくお願いいたします。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%@ page import="jamyto.*"%>
<%
//JDBCドライバを登録
Class.forName("com.mysql.jdbc.Driver");
//データベース接続文字列を作成
String strConn = "jdbc:mysql://localhost/Sample"
+ "?user=user1&password=password"
+ "&useUnicode=true&characterEncoding=cp932";
//コネクションオブジェクトを取得
Connection conn = DriverManager.getConnection(strConn);
//ステートメントオブジェクトを取得
Statement stmt = conn.createStatement();
//SQLコマンドを作成
String strSql = "SELECT * FROM n_items_list ";
//問い合わせを実行してリザルトセットを取得
ResultSet rs = stmt.executeQuery(strSql);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
<SCRIPT TYPE="text/javascript"><!--
function check(){
var x=0;
var len_max=document.form2.Co_Item.length; //登録できるアイテムの数
for(i=0;i<3;i++){
alert(len_max);
var a1=document.form1.Co_Item[i].value;
var b1=document.form1.Amount[i].value;
if(a1=="" && b1==""){
x=x+1;
if(x==3){
//何も入力されていません
alert("<%=ChangeMessage.getMessage("e001")%>");
document.form1.Co_Item[0].focus();
return false;
}
}else if(a1==""){
//アイテムコードが空欄です
alert("<%=ChangeMessage.getMessage("e002")%>");
document.form1.Co_Item[i].focus() ;
return false;
}else if(b1==""){
//数量が空欄です
alert("<%=ChangeMessage.getMessage("e008")%>");
document.form1.Amount[i].focus();
return false;
}else if(isNaN(a1)){
//アイテムコードは数字を入力して下さい
alert("<%=ChangeMessage.getMessage("e005")%>");
document.form1.Co_Item[i].focus();
return false;
}else if(isNaN(b1)){
//数量は数字を入力して下さい
alert("<%=ChangeMessage.getMessage("e009")%>");
document.form1.Amount[i].focus();
return false;
}
}
}
</SCRIPT>
</HEAD><BODY>
<H1>アイテムリストテーブル登録</H1>
<FORM NAME="form2" METHOD="post">
<DIV CLASS="section">
<TABLE CLASS ="itemlist">
<%="登録可能アイテム一覧"%>
<TR><TH>アイテムコード</TH><TH>アイテム名</TH></TR>
<%
while(rs.next()){%>
<TR><TD CLASS ="C3"><%=rs.getString("co_item")%></TD><TD CLASS ="C3"><%=rs.getString("item_name")%></TD></TR>
<%}
stmt.close();
conn.close();
%>
</TABLE>
</DIV>
</FORM>
<FORM NAME="form1" ACTION="Itemlist_Insert_Confirm.jsp" METHOD="post" ONSUBMIT="return check();" >
<DIV CLASS="section">
<TABLE CLASS="itemlist">
<%="登録フォーム"%>
<TR><TH>アイテムコード</TH><TH>数量</TH></TR>
<TR><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Co_Item"></TD><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Amount"></TD></TR>
<TR><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Co_Item"></TD><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Amount"></TD></TR>
<TR><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Co_Item"></TD><TD><INPUT TYPE="text" MAXLENGTH="4" NAME="Amount"></TD></TR>
</TABLE>
</DIV>
<DIV CLASS="section">
<INPUT TYPE="submit" VALUE="確 認">
<INPUT TYPE="button" VALUE="戻 る" ONCLICK="location.href='Menu.jsp'">
</FORM>
</DIV>
</BODY></HTML>
投稿:ばく[owada]/2006年 10月 26日 15時 10分
/更新:2006年 10月 26日 15時 10分
form2の中に該当する要素がないのが原因だと思います。
投稿:竹形 誠司[takegata]/2006年 10月 26日 15時 52分
/更新:2006年 10月 26日 15時 52分
画面上ではFORM2のテーブルが複数レコード表示されているのですが、
行数の取得方法に問題があるのでしょうか?
初期の頃リザルトセットから行数を取得するやり方を使っていたような記憶があって過去のやりとりを見直していたのですがまだ見つけられていません。
行数の取得方法に問題があるのでしょうか?
初期の頃リザルトセットから行数を取得するやり方を使っていたような記憶があって過去のやりとりを見直していたのですがまだ見つけられていません。
投稿:ばく[owada]/2006年 10月 26日 16時 29分
/更新:2006年 10月 26日 16時 29分
解決しました。
<TD CLASS ="C3"><%=rs.getString("co_item")%></TD>としていたものを
<TD CLASS ="C3"><%=rs.getString("co_item")%><INPUT TYPE="hidden" NAME="Co_Item" VALUE="<%=rs.getString("Co_Item")%>"></TD>
とすることで、行数を取得することが出来ました。
<TD CLASS ="C3"><%=rs.getString("co_item")%></TD>としていたものを
<TD CLASS ="C3"><%=rs.getString("co_item")%><INPUT TYPE="hidden" NAME="Co_Item" VALUE="<%=rs.getString("Co_Item")%>"></TD>
とすることで、行数を取得することが出来ました。
投稿:ばく[owada]/2006年 10月 26日 16時 45分
/更新:2006年 10月 26日 16時 45分