許せない心理テスト

javaの初心者です。フレームワークはSpringを使って開発しています。
Javaで改行の入った文字列をjspファイルでJava scriptでメッセージボックスに表示させたいのですが、「1行目\n2行目」と表示されてしまい、改行されません。
ソースを抜粋したものは、下記のとおりです。


コントローラ
@RequestMapping(value = "/pm", params = "nyuko", produces = "text/plain;charset=UTF-8", method = RequestMethod.POST)
public String nyuko(@ModelAttribute FormNyuko formNyuko, Model model, HttpServletRequest request,
HttpServletResponse response, HttpSession session, Map<String, String> map)
throws ServletException, IOException {

   String CRLF = "\n";
   ErrorMessage = "1行目" + CRLF
ErrorMessage = ErrorMessage + "2行目"
   map.put("ErrorMessage", ErrorMessage);
}


JSPファイル

<SCRIPT type="text/javascript">
function onLoad(){
if("${ErrorMessage}" != ""){
alert("${ErrorMessage}");
}
}
</script>

</head>
<body onLoad="onLoad()" bgcolor="#FFDAB9">


うまく改行させる方法を、どなかたご教授いただければ幸いです。

A 回答 (2件)

No.1です。



一応、

<html>
<head>
<title>alear test</title>
<SCRIPT type="text/javascript">
function onLoad(){
if ("1行目\n2行目" != "") {
alert("1行目\n2行目");
}
}
</script>
</head>
<body onLoad="onLoad()" bgcolor="#FFDAB9">
body
</body>
</html>

という内容のhtmlファイルを作って、ブラウザで表示してみて大丈夫だったので、回答してしまったのですが、よく考えてみると、サーブレット側で
String CRLF = "\n";
とすると、function onLoadの部分が、

function onLoad(){
if ("1行目
2行目" != "") {
alert("1行目
2行目");
}
}

となってしまうかも知れませんね。
これは、改行がほんとの改行になってしまって、改行文字(\n)の指定にならなくなってしまうからです。

なので、
String CRLF = "\\n";
としてみてください。
これで、"\n"が"\n"のまま出力されます。
    • good
    • 0
この回答へのお礼

度重なる質問に対して、丁寧にご回答いただき、ありがとうございます!
とてもよく理解でき、解決することができました。
3日程職場でずっと悩んでいたので、助かりました。
ありがとうございました!

お礼日時:2017/04/19 14:09

これって、まさかと思うけど、"\n"を全角のバックスラッシュにしていませんか?



ここで質問するために、あえて全角のバックスラッシュ(\)にしているだけならいいのですが、本番では半角のバックスラッシュ(\:環境によっては半角の円記号になる)にしないと改行されませんよ。
String CRLF = "\n";
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
実は、半角のバックスラッシュにもしてみました("\n"となりました)が、
それだと、メッセージボックスすら出ないのです。
ちなみに、エラーの画面にもなりません。
やはり、本来は"\n"だとすると、Java script内にバグがあるのでしょうか。

お礼日時:2017/04/19 11:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報