ورود

View Full Version : سوال: مشکل در نمایش داده های فارسی در jsp



Ma_Y_R
سه شنبه 10 شهریور 1394, 13:18 عصر
با سلام.
یک سری داده رو داخل mysql ذخیره کردم.و همه ی اونا رو داخل یک تگ </select><option></option><select> نشون میدم که درست نشون میده اما وقتی یکی از اونا رو انتخاب میکنم که تو یه label نشون بدم درست نشون نمیده.(یعنی به جای نمایش به صورت فارسی یک سری حروف نامربوط نشون میده)
<div id="center"> <sql:query dataSource="${snapshot}" var="result">
SELECT name,family from teacher;
</sql:query>
<form action="selectTeacherCourse.jsp" metod="post">


<div id="teacher">
<select name="teacher" size="10" name="teacher">
<c:forEach var="row" items="${result.rows}">
<option><c:out value="${row.name}"/> <c:out value="${row.family}"/></option>
</c:forEach>
</select>


<div id="add1">
<input name="addteacher" type="submit" value="اضافه کردن"/>
<input name="deletteacher" type="submit" value="حذف کردن"/>
</div>
</div>
</form>







<%--************************************************** ********--%>
<div id="input">
<label id="IN1"><p>${param.teacher}</p></label>
<label id="IN1"><p>${param.course}</p></label>
<div id="add2">
<form>
<input name="add" type="submit" value="ثبت"/>
</form>
</div>
</div>
<%--************************************************** ********--%>
<sql:query dataSource="${snapshot}" var="result">
SELECT name_course from course;
</sql:query>
<form action="selectTeacherCourse.jsp" metod="post">


<div id="course">
<select name="teacher" size="10" name="course">
<c:forEach var="row" items="${result.rows}">
<option><c:out value="${row.name_course}"/></option>
</c:forEach>
</select>


<div id="add3">
<input name="addcourse" type="submit" value="اضافه کردن"/>
<input name="deletcourse" type="submit" value="حذف کردن"/>


</div>
</div>
</form>

ahmad.mo74
سه شنبه 10 شهریور 1394, 19:44 عصر
به jsp یا jstl ربط نداره.
اونجا که داری متن رو از توی option میفرستی باید قبلش encode بشه و تو صفحه بعدی موقع گرفتن پارامتر decode بشه.

مثلا :


<form id="frm" action="selectTeacherCourse.jsp" method="post">
<div id="course">
<select id="teacher">
<c:forEach items="${result.rows}" var="row">
<option>${row.name_course}</option>
</c:forEach>
</select>
</div>
<input type="hidden" id="name_course" name="name_course" value=""/>
</form>
<button type="submit" id="submitButton">Submit</button>
<script>
$(document).ready(function () {


$("#submitButton").click(function () {
var s = $("#teacher").find("option:selected").text();
$("#name_course").val(encodeURIComponent(s));
$("#frm").submit();
})


})
</script>

Ma_Y_R
پنج شنبه 12 شهریور 1394, 17:41 عصر
به jsp یا jstl ربط نداره.
اونجا که داری متن رو از توی option میفرستی باید قبلش encode بشه و تو صفحه بعدی موقع گرفتن پارامتر decode بشه.

مثلا :


<form id="frm" action="selectTeacherCourse.jsp" method="post">
<div id="course">
<select id="teacher">
<c:forEach items="${result.rows}" var="row">
<option>${row.name_course}</option>
</c:forEach>
</select>
</div>
<input type="hidden" id="name_course" name="name_course" value=""/>
</form>
<button type="submit" id="submitButton">Submit</button>
<script>
$(document).ready(function () {


$("#submitButton").click(function () {
var s = $("#teacher").find("option:selected").text();
$("#name_course").val(encodeURIComponent(s));
$("#frm").submit();
})


})
</script>


میشه لطفا بیش تر توضیح بدید....من این اطلاعات رو دارم دوباره واسه همین صفحه میفرستم که ازش استفاده کنم...در واقع قراره بعد از انتخاب توی همین صفحه نشون بده..دیکد رو باید کجا بنویسم؟؟؟؟
چرا input رو hidden تعریف کردین و بعد خارج از فرم یه button????

ahmad.mo74
جمعه 13 شهریور 1394, 13:41 عصر
برای دیکد کردن :


<p id="IN1"></p>
<%--یا--%>
<p id="IN2"><%=URLDecoder.decode(request.getParameter("course"), "UTF-8")%>
</p>
<script>
window.onload = function () {
document.getElementById('IN1').innerText = decodeURIComponent('${param.teacher}')
};
</script>




چرا input رو hidden تعریف کردین و بعد خارج از فرم یه button????


برای اینکه عبارت انتخاب شده قبل فرستادن انکد بشه، یه input در نظر گرفتم (hidden برای اینه که از چشم کاربر دور باشه) تا موقع کلیک شدن باتن عبارت انتخاب شده رو بگیره و انکد کنه بعد بریزتش توی name_course. بعدشم فرم رو submit کردم.

به جای اینکار میشه از onsubmit هم استفاده کرد :


<form id="frm" onsubmit="return encodeParams(this)" method="POST">
<%--...--%>
<input type="submit" value="submit"/>
</form>
<script>
function encodeParams(theForm) {
//...
theForm.action = 'selectTeacherCourse.jsp';
return true;
}
</script>


مهم :

http://stackoverflow.com/a/611117

Ma_Y_R
جمعه 13 شهریور 1394, 21:05 عصر
وقتی خط زیر رو میزارم ارور میده..........
<label id="IN1"><p><%=URLDecoder.decode(request.getParameter("teacher"),"UTF-8")%></p></label>




برنامه رو این طوری نوشتم ولی با خط بالا مشکل داره .......

<div id="center">

<sql:query dataSource="${snapshot}" var="result">
SELECT name,family from teacher;
</sql:query>
<form id="frm" onsubmit="return encodeParams(this)" action="selectTeacherCourse.jsp" metod="post">


<div id="teacher">
<select name="teacher" id="teacher1" size="10">
<c:forEach var="row" items="${result.rows}">
<option><c:out value="${row.name}"/> <c:out value="${row.family}"/></option>
</c:forEach>
</select>
<input name="addteacher" type="submit" value="اضافه کردن"/>

</div>
</form>
<script>
function encodeParams(theForm) {
//...
theForm.action = 'selectTeacherCourse.jsp';
return true;
}
</script>





<%--************************************************** ********--%>
<div id="input">

<label id="IN1"><p><%=URLDecoder.decode(request.getParameter("teacher"),"UTF-8")%></p></label>
<script>
window.onload = function () {
document.getElementById('IN1').innerText = decodeURIComponent('${param.teacher}');
};
</script>



<div id="add2">
<form>
<input name="add" type="submit" value="ثبت"/>
</form>
</div>
</div>