• ベストアンサー

strutsで空白を認識させるには?

こんばんは。質問です! strutsとjavaとTomcatを使用して開発をしております。 SQLから取得したデータを jspでテーブルの<TD>に<bean:write>を使ってただ表示 をしているだけなのですが、 データがnullの場合、テーブル枠が消えてしまい、 レイアウトが崩れてしまいます・・・ strutsでnullデータに" "(半角空白)を入れて渡すと、 変わらず、"&bnsp;"を入れて渡すと&bnsp;が そのまま出力されてしまいます・・・ そこで、" "(全角空白)を入れて渡したところ、 うまくいきました。 ですが、他に良い方法はないでしょうか? また、質問タイトルには、「strutsでは~」と書いていますが、 実際のところ、jspで制御した方がいいのでしょうか? ご存知の方がいましたら、ご回答お願い致します。

  • Java
  • 回答数3
  • ありがとう数6

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

  • ベストアンサー
  • momozange
  • ベストアンサー率67% (21/31)
回答No.2

半角スペースでレイアウトが崩れるのはHTMLの性質です。 単純な<TABLE>タグでも再現すると思います。 <TABLE> <TR><TD>hoge</TD></TR> <TR><TD> </TD></TR> </TABLE> '&bnsp;'がそのまま表示されるのはStrutsのタグライブラリが'&'をエスケープ処理したため 「正常に」5文字の文字列を表示している結果です。 # 本当に'&'を表示したいときに困るでしょう? 主な回避策としては ・表示時にBeanの中を評価する(JSPで処理をおこなう) ・自前のエスケープ処理を記述したJavaクラスを呼び出す ・Strutsタグライブラリを拡張する が挙げられます。 若干難易度があがるかもしれませんが、タグライブラリの拡張が汎用性に富んでいます。

system0001
質問者

お礼

ご回答ありがとうございます! とても詳しくて参考になりました! タグライブラリを拡張してみます。 ありがとうございました☆

その他の回答 (2)

回答No.3

こんにちは、 このような感じでも回避できると思います。 <TD><bean:write ・・・・ /><br/></TD> brタグを入れてやることで回避できると思います。 >変わらず、"&bnsp;"を入れて渡すと&bnsp;が >そのまま出力されてしまいます・・・ これですが、filter属性があったような気がします。 filter=falseでセットされているものをそのまま表示されます。 <bean:write filter=false ・・・ /> でも、全てエスケープされなくなると思いますので、ご注意を・・・

system0001
質問者

お礼

こんにちは。 ご回答ありがとうございました! あれから、filter属性で対処しました。 <br>の方法も先程試しましたが、やはり そのまま&nbsp;が出力されました。 ありがとうございました☆

  • mahny
  • ベストアンサー率74% (57/77)
回答No.1

とりあえず &bnsp; ではなく &nbsp; ね 正直、HTMLまで「&nbsp;」が行っていてその「&nbsp;」がそのまま 文字列としてブラウザに出てしまうのは考えにくいです。 ただ、どうしてもダメならstruts固有の問題と思って素直にJSPに処理させたほうが良いかも。

system0001
質問者

お礼

こんばんは。ご回答ありがとうございます! 誤字でした・・・すみません! そうですか。Strutsですか・・・ 今のところ、全角空白" "をセットすると、 何してるんだろう?って感じで、嫌なんですよね・・・ JSPで処理してみます! ありがとうございました☆

関連するQ&A

  • エクセルの空白セル

    エクセルの空白セルにはデフォルトの状態では、Nullも入っていないまっさらな状態なのでしょうか?Enter、Tab等でカーソルを移動させていった時それらの制御文字はやはりデータとしては扱われないが、セルの中に入っているという認識でもよいのでしょうか?見た目空白のセルで関数の引数などに影響のあるのは、全角と半角のスペースだけなのですか。

  • 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
  • Strutsの設定エラーについて

    現在、Java開発環境及びStrutsフレームワークの設定を行なっていたのですが、動作確認用のJSPを実行すると以下のエラーが表示されてしまいます。 HTTPステータス500- << 説明 >> The server encountered an internal error () that prevented it from fulfilling this request. << 原因1 >> javax.servlet.ServletException: アクション /BeginAction に対応するマッピングが見つかりません org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791) org.apache.jsp.input_jsp._jspService(input_jsp.java:75)  <--- 略 ---> javax.servlet.http.HttpServlet.service(HttpServlet.java:802) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122) ※もうひとつ同様の原因が表示されていますが、長文となるため省略しています。 今回、Strutsを設定するにあたり、以下のページを真似て設定しました。 http://www.atmarkit.co.jp/fjava/rensai3/struts01/struts01_2.html また動作確認用のJSPは次に示すURLの"input.jsp"を使用させて頂いています。 http://www.atmarkit.co.jp/fjava/rensai3/struts02/struts02_1.html ※現在は、Strutsを使用しないJSPは正常に実行されます。 動作環境は、 OS:WindowsXP pro sp2 Tomcat:5.5.17 Java:J2SDK1.4.2_12 Stuts:1.3.5 です。 原因/対応策のご教授をお願い致します。

  • ◆Struts サンプルプログラムのURLがわかりません。◆

    Struts初心者です。教えて下さい。 http://www.stackasterisk.jp/tech/java/strutsSec01_03.jsp#5 上記サイトで勉強中にいきずまってしまいました。初歩的質問で申し訳御座いませんが教えて下さい。 4.Strutsアプリケーションの作成 で記載されている通りに jspファイル、javaファイルを配置し、struts-configファイルも記載されているようにしました。 画面を表示させたいのですが、どのような URLにアクセスすれば画面が表示されるのでしょうか・・?? web.xmlの中に urlマッピングする情報を追記したり、struts-configに追記したりする必要がありますのでしょうか・・・?? servletだと web.xmlに、<servlet-mapping>要素に<url-pattern>を定義してURLが判断できたのですが・・・・ 以下のようなURLでアクセスしているのですが、TomcatがHTTPステータス 404を表示します。。tomcatの再起動なども行なっております。 http://localhost:8080/struts-blank/jsp/loginForm.jsp 根本的に理解できていないと思うので、参考になるサイト、書籍などもあったら教えて下さい。 環境 WinXP,JDK1.5,Eclipse3.2,Struts1.2,Tomcat5.x 宜しくお願いします。

  • Java Struts ~に対するゲッターメソッドがありません

    Java Struts WindowsXp Java Struts共に初心者です。 上記を使用してログイン画面を作成しています。 エラーが発生しているのですが 「Bean LoginFrm のプロパティ id に対するゲッターメソッドがありません」 と言われます。 参考サイトはいくつもあるのですが、そもそもイテレータを使用していないとか私の状況に一致する回答を見つけることができませんでした。 (JAVA、Struts共に慣れていないためか応用がきかないみたいです) loginTop.jsp login.jsp LoginFrm.java LoginAct.java struts-config.xml のいずれかが原因だとは思うのですが、そのどこかが皆目見当もつきません。 loginTop.jsp----------------------------- <html:form action="/login"> <table border="0"> <tr><td> ログインID<html:text name="LoginFrm" property="id" size="6" maxlength="5" /> </td></tr> <tr><td> パスワード<html:password name="LoginFrm" property="pass" size="6" maxlength="5" /> </td></tr> </table> </html:form> login.jsp---------------------- <html:form action="/login"> <table border="0"> <tr><td> A:<bean:write name="LoginFrm" property="id" /> </td></tr> <tr><td> B:<bean:write name="LoginFrm" property="pass" /> </td></tr> </table> </html:form> LoginFrm.java---------------------- private String id; private String pass; public String getID() { return id; } public void setID(String id) { this.id = id; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } LoginAct.java-------------------- throws Exception { request.setCharacterEncoding("Windows-31J"); LoginFrm logFrm = (LoginFrm) form; log.info(" user = "+logFrm.getID()); log.info(" user = "+logFrm.getPass()); return mapping.findForward("login"); } struts-config.xml--------------------------- <form-beans> <form-bean name="LoginFrm" type="loginForm.LoginFrm" /> </form-beans> ~ <action attribute="LoginFrm" input="/pages/loginTop.jsp" name="LoginFrm" path="/login" type="loginAction.LoginAct" scope="request" validate="true"> <forward name="login" path="/pages/login.jsp" /> </action> 以上です。 かなり長くなり申し訳ありません。

    • ベストアンサー
    • Java
  • struts の検索結果の表示

    struts で、入力された文字列を含むデータをJSPで表示させるものを作成したいと思っています。 検索結果を ArrayList の形式で持たせています。 結果の中身は、カンマ区切りで複数のデータが1レコードに含まれています。(こんな感じです・・・"東京,01,22,日本") その結果を、session.setAttribute("resultList", searchResult); ※searchResult==検索結果ArrayListの名前 の形でJSPに送り表示させたいのですが、JSP側でどのように記述すればうまく表示できるのかが不明です。 表示は、tableを使用して <table> <tr> <td>東京</td><td>01</td><td>22</td><td>日本</td> </tr> </table> のようにしたいです。 お分かりの方がいましたら、回答ください。

  • strutsでのエラーメッセージについて

    strutsを勉強し始めたばかりなので質問が漠然としていて申し訳ありませんが、以下のようなエラーメッセージが出て自分では解決できないので、みなさんに質問させていただきます。 エラーメッセージは以下のものです。 org.apache.jasper.JasperException: Cannot find bean org.apache.struts.taglib.html.BEAN in any scope at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 文字制限の関係上以下省略 このようなエラーメッセージが出ます。 strutsはEclipse上で動作をさせています。 そして実行前にTomcatを動作させてからInternetExplorerに実行させたい場所を指定してJSPを呼び出そうとしている時に起こるエラーメッセージです。 質問が漠然としており非常に返答しにくいかもしれませんが,対処法が私には全く見当がつかないので,~を修正してみては?といったいくつかの解決方法を頂きたいのです。 質問内容がわかりにくい等ありましたら御指摘ください。 では、御返答宜しくお願いします。

    • ベストアンサー
    • Java
  • StrutsからString型のPOST値を送る

    初めて投稿させていただきます。 質問事項ですが、 Strutsを使用したフレームワークから、外部サイトへ向けString型の POST値を送ろうと思っているのですが、上手く出来ません。 自分なりに考え、 Actionクラス側 request.setAttribute("aaa","aaa") JSP側 request.getParameter("aaa") 等とやってもとれません。 JSP側で<bean:write name="aaa" />とすれば取れますが、送り先が他言語の為、String型のPOST値で送るしかない状況です。 HttpSessionを使えば上手くいくのですが、出来れば使用せず作成したいと思っています。 どなたか、ご存知の方がおりましたらお教え下さい。 尚、開発環境は下記の通りです Java 1.4 Struts 1.2 Tomcat 5.0 よろしくお願いします。

    • ベストアンサー
    • Java
  • Struts、Iterateタグの使い方

    StrutsのIterateタグを使おうとしているのですが、 jsp.error.unterminated.tagというエラーが出てしまい ます。Iterateタグの使い方に問題があると思うのです が、どのように対処すれば良いのかが分かりません。ご 存知の方、教えて頂けませんでしょうか。お願いしま す。 <%@ page language="java" import="java.util.Collection, aloha.business.UserBO" %> <%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> <%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> <jsp:include page="header.jsp" flush="true" /> <% UserBO UserBO = new UserBO(); Collection col = userBO.findAllUser(); %> <table><tr> <logic:iterate id="user", name="col", length="5"> </logic:iterate>

    • ベストアンサー
    • Java
  • JSPでstrutsを使用したオブジェクトについて

    動作環境 OS:WindowsXP Home Edition SP3 Browser:IE8 OpenSoftWare:Tomcat6.0.29 Framework:Struts2.2.1 Tool:Eclipse3.2.0 strutsで、textfieldやselectをSelectタグに入れようとするとブラウザ表示で、改行されてしまいます。 改行されずに表示をさせたいです(予想結果)。 設定があると考えているのですが、どこかが分かりません。 どなたかご指導願います。 ■事象例 1.a.jsp実行 <table border cellspacing=1> <tr> <td>テスト前</td> <td><s:textfield id="txtTest" /></td> <td>テスト後</td> </tr> 2.IE8上の表示(画像添付参照) ・現状結果 [テスト前]       [           ] [テスト後] ・予想結果 [テスト前][           ][テスト後]

    • ベストアンサー
    • Java

専門家に質問してみよう