JSPでstrutsオブジェクトを出力できない問題

このQ&Aのポイント
  • JSPでJavaPGで定義したstrutsオブジェクトをout.printlnで出力できない問題が発生しています。
  • 直接strutsタグで書くと正常に表示されるため、Java側での対応が必要でしょうか?
  • OSはWindowsXP Home Edition SP3、BrowserはIE8、OpenSoftWareはTomcat6.0.29、FrameworkはStruts2.2.1、ToolはEclipse3.2.0を使用しています。
回答を見る
  • ベストアンサー

JSPで、PG上のstrutsオブジェクトについて

動作環境 OS:WindowsXP Home Edition SP3 Browser:IE8 OpenSoftWare:Tomcat6.0.29 Framework:Struts2.2.1 Tool:Eclipse3.2.0 JavaPGで、out.println関数を使用して、strutsのオブジェクト書いてもブラウザ上で出力されません。 直接strutsタグで、書くとブラウザ上に正常に表示されます。 Java側で、対応されていないのでしょうか? どなたか、ご指導願います。 ■事象例 1.「a.jsp」実行 <%@ page contentType="text/html; charset=Shift_JIS"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Test</title> </head> <body> <s:form align="center" action="Test" theme="simple"> <% String strtest = "#{'1':'1','2':'2'}"; out.println("<s:select name=\"cbotest\" list=\"#{'1':'1','2':'2'}\"/>"); %> </s:form> </body> </html> 2.「b.jsp」実行 <%@ page contentType="text/html; charset=Shift_JIS"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Test</title> </head> <body> <s:form align="center" action="Test" theme="simple"> <s:select name="cbotest" list="#{'1':'1','2':'2'}"/> </s:form> </body> </html> 3.IE8上の表示(画像添付参照) 1.「a.jsp」結果 何も出力されません。 2.「b.jsp」結果 [1[▼]] [1■■] [2   ]

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

JSPカスタムタグは、JSPがサーブレットに変換されるときに必要な java コードに展開されます。 JSP中のjavaコードは そのままサーブレットに埋め込まれます。 つまり、JSPに埋め込まれた Javaコードがを吐く出力はそのままブラウザに送られ、 カスタムタグとしては解釈されません。

その他の回答 (1)

  • public_sa
  • ベストアンサー率52% (13/25)
回答No.1

JSPにおいてstrutsのタグ等はサーバ側で処理されます。 その処理結果がクライアント側へ送信されブラウザで処理されます。 これを踏まえて out.println("<s:select name=\"cbotest\" list=\"#{'1':'1','2':'2'}\"/>"); は サーバ側で out.println("<select name="cbotest"><option value="1">1</option>(省略...)</select>"); と展開されます。 これが out.printlnでサーバ側コンソールへ出力されます。 これはSystem.out オブジェクトが標準出力を担うためです。 HTTPのストリームへ出力したければ HttpServletResponse#getWriterを使用してストリームを取得する必要があります。 JSP内であればたしかoutは暗黙で使用できたと思います。が どうだっけ。忘れた。

6ass3eu6
質問者

補足

回答ありがとうございます。 色々、調べたのですが、よく、分かりません。 http://www.javaroad.jp/servletjsp/sj_servlet3.htm 簡単な、具体例がございましたら、更なるご指導願います。

関連するQ&A

  • Struts 1.3 でbeanタグが認識されない

    Struts初心者です。 Struts1.3で以下のようなJSPを作成していますが、 "bean:write"のところで、"bean"に対応するtaglibディレクトリが存在しないかTLDファイルが見つかりません。 とエラーになります。 <%@ page contentType="text/html;charset=Windows-31J" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> ・ ・ ・ <html:html> <head> <title>○○○○○○○○</title> </head> <body> <h1>○○○○○○○○</h1> ●●●●<bean:write name="xxxx" property="id" />! </body> </html:html> "html"の方はエラーになりません。 ケアレスミスのような気がしていますので、どなたか教えていただけると嬉しいです。

  • strutsでフレームの分割ができません。

    strutsで、 http://struts.wasureppoi.com/taglib/03_frame.html を見ながらフレームの分割を下記のように行おうとしていますが、エラーが表示されます。 ソース ---- <%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-nested" prefix="nested" %> <html:html> <head> <title>テスト</title> </head> <frameset cols="30%,*"> <html:frame page="l.jsp"/> <html:frame page="r.jsp"/> </frameset> </html:html> ---- エラーメッセージ ---- HTTPステータス 500 - type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: Exception in JSP: /index08.jsp:13 10: <title>テスト</title> 11: </head> 12: <frameset cols="30%,*"> 13: <html:frame page="l.jsp"/> 14: <html:frame page="r.jsp"/> 15: </frameset> 16: </html:html> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451) 原因 java.lang.NullPointerException org.apache.struts.taglib.TagUtils.pageURL(TagUtils.java:1070) ---- 別のページを見ると、 <html:frame page="l.jsp" name="hidari"/> とname属性を宣言しているようですが、同様に記述してみると、スコープが無いとエラーが出てしまいます。 環境は、  WindowsXP  Eclipse3.3  Tomcat5.5  struts-1.3.8  JDK1.5 です。 どのように記述すべきか、検索してもヒットしなかったので、恥かしながらここで質問させて頂く事にしました。 どのように直すべきか、分かる方がいらっしゃいましたらご教授頂けないでしょうか?  また、オススメのStrutsの本がありましたら、こちらも教えて頂けたら幸いです。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • NullPointerException

    Strutsでjspを書きました。下のソースなのですが、どうやらlinkタグがうまくいっていないようなのです。NullPointerになってしまいます。どこが悪いか教えていただけませんか?web.xmlもちゃんと書いてあるし、struts-config.xmlもちゃんと書いたのですが・・・。お願いします。 <%@page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <html:html> <head> <title>top</title> </head> <body> <div align="left"> <hr> <h1><font color="#20B2AA">■ <メニュー画面> ■</font></h1> <hr> <html:link forward="shoppingInitial/Entry"><h3> 登録 </h3></html:link> <html:link forward="shoppingInitial/Browse"><h3> 見る </h3></html:link> </body> </html:html>

    • ベストアンサー
    • Java
  • 教えてください:strutsのhtml:formタグがjspに展開された状態の、actionの値について

    java初心者です。 どなたか教えていただけませんでしょうか? JAVAのstrutsを使用してソフトを作成しています。 JSPに記載した「<html:form action="/authentication" focus="id"> 」 との記述が、WEB(IE)に展開されたソースを見ると、「<form name="AuthenticationForm" method="post" action="/strutsTest/authentication">」 に変換されています。 action="/authentication"と記述しているにもかかわらず、 action="/strutsTest/authentication"と展開されているのですが /strutsTestが自動的に付与されているのは、なぜなのでしょうか? なにか設定するところがあるのでしょうか? ※struts-config.xmlに指定したpathと一致しない為、404NotFoundになるので自動設定しないように変更したいのです。 ちなみに環境は struts-1.3.10 Apache Tomcat 6.0.14 Server EclipsVersion: 3.4.2 pakage名:struts プロジェクト名:strutsTest struts-config.xmlの設定   <form-beans> <form-bean name="AuthenticationForm" type="struts.AuthenticationForm"/> </form-beans> <global-exceptions> </global-exceptions> <global-forwards> <forward name="fail" path="/login.jsp"/> </global-forwards> <action-mappings> <action path="/authentication" name="AuthenticationForm" type="struts.AuthenticationAction" scope="session"> <forward name="success" path="/welcome.jsp"/> <forward name="fail" path="/login.jsp"/> </action> </action-mappings> login.jsp <%@ page contentType="text/html; charset=Windows-31J" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <html:html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"/> <title>ログイン画面</title> </head> <body> <html:errors/> ID・パスワードを入力してください。 <html:form action="/authentication" focus="id"> <html:text property="id" size="16"/> <br> <html:password property="pas" size="16" redisplay="false" /> <br> <html:submit property="submit" value="送信"/> <html:reset value="リセット"/> </html:form> </body> </html:html> 動作順は、login.jsp => AuthenticationAction.class => welcome.jsp です。 よろしくお願いします。

  • DBからの値を取得する方法!?

    始めまして。プログラム初心者です。DBは出来上がってるのですが、DBからの値を取得する文を何処にどうやって書けば良いか分かりません。 以下は自分で書いた文ですが・・・ 値はusernameで、ようこそXXXさんのXXXにログインした人の名前を出すのが目的です JSPの文です↓ <%@ page contentType="text/html; charset=Windows-31J" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-nested" prefix="nested" %> <html:html>         <head> <body> <P> <html:html>         <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"/> <title>ログインしました</title> <html> <A HREF="/kadai/pass.jsp">パスワード変更</A><br> <A HREF="/kadai/Login.jsp">ログオフ</A> ようこそ <bean:write name="username" scope="session"/> ←これで入力したが反映しません・・・ さん    </body> </html:html> </P> </head> <html> <A HREF="/kadai/pass.jsp">パスワード変更</A><br> <A HREF="/kadai/Login.jsp">ログオフ</A> </body> </html:html> 環境ですがstruts、Oracle、tomcat、eclipseです

  • eclipse+Struts+Tomcat

    eclipse+Struts+Tomcatという環境で開発を行おうとしています。 環境は以下のとおりです。 Pleiades all in one 3.5 struts 1.3.10 Tomcat 6.0.29 まず手始めに、一番シンプルなフォームに送信ボタンが1つあるだけのものを作ろうとしているのですが、以下のエラーが出て先に進めません。 The server encountered an internal error () that prevented it from fulfilling this request. 書いたソースは下記のとおりです。 <?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>hogehoge</title> </head> <body> <html:form action="/HOGE" method="post"> <html:submit value="送信" /> </html:form> </body> </html> これをhtmlタグを一切使わずに書くと何のエラーもなく表示されます。 eclipseでhtmlタグを使用しない開発は考えられないのですが、今回Javaが初めてで何がどう悪いのかの見当もつきません。 プロジェクト自体は、「動的Webプロジェクト」で作成しています。 どなたかご存知の方はご教示いただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • TOMCATを使用したStrutsエラーについて

    動作環境 OS:WindowsXP Browser:IE8 Tomcat6.0 Tomcatをインストールしたwebapps直下にあるjspファイルを実行したいと思っています。 その中にStrutsを使用する記述があるのですが、実行するとエラーが出ます。 ネットでも色々と調べたのですが、原因がつかめません。 1.jspファイル <%@ page pageEncoding = "Shift_JIS" %> <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <html> <body> <html:form action="cancel_view" > <html:text property="stringData" size="15" maxlength="15" /> <html:submit property="submit" value="送信" /> </html:form> </body></html> 2.web.xmlファイル <taglib> <taglib-uri>/tabs/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> 3.エラー内容 3.1.IE8 org.apache.jasper.JasperException: JSP ファイル "/tags/struts-html" が見つかりません 3.2.Tomcat6 2010/11/20 21:13:17 org.apache.jasper.compiler.TldLocationsCache processWebDotXml 警告: 内部エラー: ファイル /WEB-INF/web.xml が見つかりません 「1.」の3行目にエラーがあるみたいです。何故ならその行を外せばエラーは消えます。 ですが、何も表示されません。 「3.2.」にweb.xmlは保存されています。そこに必要な*.tldファイルも保存されています。 libフォルダも作り動作に必要な*.jarファイルを保存しています。 web.xmlがあるにもかかわらず、見つかりませんと出るのは何故でしょうか? 環境変数のパスが足りないとも思えません。 どなたか詳しい方、エラー解消のご教授の程よろしくお願いします。

  • JSPの文字化けについて

    はじめまして。 初心者ですがよろしくお願いします。 現在、Strutsの勉強をしています。 ログイン画面を作成しているのですが、 以下の「logon.jsp」を表示したところ 文字化けが発生しました。 自分の思いつく限りの事は試したのですが、 一向に文字化けを解消できません。 どこが悪いのかお分かりになる方が いらっしゃいましたらご教示願います。 ○主な環境 OS:WindowsXP Java SDK :1.5.0_01 Eclips :3.0.1 Struts :1.2.4 Apache Tomcat:5.5.4 mysql :5.0.4-beta ○logon.jsp <%@ page contentType="text/html;charset=Windows-31J"%> <%@ page pageEncoding="Windows-31J" %> <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %> <!-- %@taglib uri="struts-html" prefix="html" % --> <html:html> <head><title>ログオン画面</title></head> <body bgcolor="#ffffff"> <center> <h3>ログオン画面</h3> <html:form action="/logon"> <html:errors /> <table border="0"> <tr><td>ユーザID </td><td><html:text property="userName" size="20" maxlength="30" /> </td></tr> <tr><td>パスワード</td><td><html:password property="password" size="20" maxlength="30" /></td></tr> </table> <br></br><br></br> <html:submit value="ログオン" /> </html:form> </center> </body> </html:html>

    • ベストアンサー
    • Java
  • strutsのApplicationResource.propertiesの文字化けについて

    表題の通りstrutsのApplicationResource.propertiesを利用した部分が文字化けしてしまいます 以下にファイルの詳細を記述します。 JSPファイル <%@page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <html:html> <BODY> <html:form action="/HelloWorld" > <bean:message key="greeting" /><BR> お名前をどうぞ。<BR><html:text property="name" /><BR> <html:submit> <bean:message key="greeting" /> </html:submit> </html:form> </BODY> </html:html> ApplicationResource.propertiesのファイル greeting=こんにちは welcome=ようこそ 状況 「お名前をどうぞ」は正しく表示 keyのgreetingは?±????????と表示 以上のような状態となってしまいます。どなたか解決策をご存じの方はご教授ください

    • ベストアンサー
    • Java
  • Struts2でのスタイルシート利用について

    Struts-2.2.1.1で画面を作ろうとしています。 他環境はTomcat7、jdk1.6、eclipse3.6.2です。 WEB-INF/libには、struts2-blank.warを解凍した中にあった commons-fileupload-1.2.1.jar commons-io-1.3.2.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar struts2-core-2.2.1.1.jar xwork-core-2.2.1.1.jar を配置しています。 Struts1の初期に少し触った程度でタグライブラリはほとんど知識がありません。 <%@ page pageEncoding="Windows-31J" contentType="text/html; charset=Windows-31J" %> <%@ taglib prefix="s" uri="/struts-tags" %> <HTML> <HEAD> <LINK rel="stylesheet" type="text/css" href="/pj/contents/css/default.css"> </HEAD> <BODY> <s:form action="Login" theme="simple" > <TD class="aaa"><s:textfield key="shozokucd" styleClass="bbb"/></TD> </s:form> </BODY> </HTML> TDに対してclass指定したスタイルは反映されているのでcss参照は問題ありません。 jsp表示結果では、sタグでinputタグが出力されているのでstruts-tagsも参照できています。 sタグ内でclass指定したい場合、classではなく、styleClassで記述しなければならないところまでは分かったのですが styleClassにcssのクラス名を指定するだけではスタイルが反映されません。 (jsp表示結果では styleClass="bbb"のまま出力されている。) StrutsのUIタグの中でstyleClassを指定する場合、cssファイルではなくタグ用に別形式で何か用意しなければいけないのでしょうか。 「Struts スタイルシート」や「Struts styleClass」で検索しても情報が得られませんでした。 初歩的な質問ですが、よろしくお願いいたします。

    • ベストアンサー
    • Java