21.7.29 JSでJSTLを混用


JavaScript-JSTL


エラーの例

    function planSchSubmit(){
		<c:choose>
			<c:when test="${selected_date} eq  $('#startDate').val()">
			var selected_startDate = ${selected_date} + ' ' + $('#startTime option:selected').val();
			$('#startDate').attr('value', selected_startDate);
			</c:when>
			<c:otherwise>
			var selected_startDate = $('#startYMD').val() + ' ' + $('#startTime option:selected').val();
			$('#startDate').attr('value', selected_startDate);
			</c:otherwise>
		</c:choose>
		
		var selected_endDate = $('#endYMD').val() + ' ' + $('#endTime option:selected').val();
		$('#endDate').attr('value', selected_endDate);
		
		$("#postSch").attr("action","insert.sch").submit();
	};

正しい例

    function planSchSubmit(){
		var selectedDate = '<c:out value = "${selected_date}"/>';
        또는
        var selectedDate = 	'${selected_date}';
        
    	if(selectedDate == $('#startDate').val()){
			var selected_startDate = ${selected_date} + ' ' + $('#startTime option:selected').val();
			$('#startDate').attr('value', selected_startDate);
		} else{
			var selected_startDate = $('#startYMD').val() + ' ' + $('#startTime option:selected').val();
			$('#startDate').attr('value', selected_startDate);
		}
		
		var selected_endDate = $('#endYMD').val() + ' ' + $('#endTime option:selected').val();
		$('#endDate').attr('value', selected_endDate);
		
		$("#postSch").attr("action","insert.sch").submit();
	};
<変数の設定>
첫번째 방법 : var selectedDate = '<c:out value = "${selected_date}"/>';
또는
두번째 방법 : var selectedDate ='${selected_date}';
どうしたんですか.
第一に、JSPの実行順序はjava->JSTL->HTML->JAVASCIPT
第2に、に出力されると<.>自動的に<>に変換されます.
$を使用した出力はそうではありません.したがって、出力された値内で

  • XSSを攻撃する?
    https://noirstar.tistory.com/266
    だから2つ目の方法よりも1つ目の方法が好きです.