2010-01-18 27 views
5

zacząłem krótki czas temu z JSP, JSTL, HTML i JavaScript, więc tutaj jest mój problem:zestaw wartość var ​​od wartości pola input

muszę ustawić wartość var ​​wartość wejściem ukrytym. Inną opcją jest możliwość porównania wartości zmiennej, którą wysłałem z żądaniem z wartością ukrytego wejścia, przy użyciu wartości o wartości .

Dzięki.

Aktualizacja

Próbowałem, ale nie może tego dokonać.

Mam to pole, które zawiera id i obiekt. Mam również listę obiektów, więc muszę znaleźć obiekt związany z tym identyfikatorem.

<input type="text" name="id1" /> 

ale jeśli mogę to zrobić:

<c:set var="dd" value="${param.id1}" /> 
<input type="text" value="${dd}" /> 

Tekst wejściowy jest pusty, ale tekst odnoszący się do ID1 wyświetla 850 (czyli wartość jest dinamic)

Wszelkie sugestie dlaczego nie działa ?

Aktualizacja 2

muszę "wieloczęściowy/form-data", ponieważ w formie muszę przesłać zdjęcie. Rozumiem, jak uzyskać parametry z Java, ale ponieważ nie używam serwera, ale strony JSP, jest jakikolwiek sposób to zrobić? Wystarczy przeczytać ten element wejściowy i zapisać go w zmiennej.

Odpowiedz

3

Możesz uzyskać dostęp do parametrów żądania za pomocą domyślnej zmiennej ${param}.

E.g. http://example.com/context/page.jsp?foo=bar w połączeniu z

<c:if test="${param.foo == 'bar'}"> 
    The foo's param value is bar! 
</c:if> 
<c:if test="${param.foo != 'bar'}"> 
    The foo's param value is not bar, it is: ${param.foo} 
</c:if> 

pokaże pierwszy warunek.

Jeśli rzeczywiście chcesz zachować jakąś ukrytą elementu wejściowego w kolejnych żądań (które tak naprawdę nie wyjaśnił w swoim pytaniu), to w zasadzie wszystko, co musisz zrobić, to:

<input type="hidden" name="foo" value="${param.foo}"> 

Aktualizacja: zgodnie z aktualizacją: musisz podać element wejściowy również nazwa. Tak więc np.

<input type="text" name="id1" value="${param.id1}" /> 

W ten sposób jest ona dostępna przez request.getParameter("id1") i naturalnie również ${param.id1}. Czy widzisz to teraz?

Aktualizacja 2: jak na komentarz tutaj: na pewno jest to związane z enctype="multipart/form-data". Dzięki temu kodowaniu parametry żądania nie znajdują się już w mapie parametrów, a zamiast tego w treści żądania, ze względu na miksowanie z danymi binarnymi (przesyłanie plików).Opowiadanie tego wszystkiego będzie długą historią, ale w zasadzie sam musisz przeanalizować tę prośbę. Jeśli korzystasz z Serwletu 2.5 lub starszego, bardzo pomocne jest tutaj Apache Commons FileUpload. Przeczytaj zwłaszcza "Podręcznik użytkownika" i "Często zadawane pytania", aby zobaczyć przykłady kodu i dowiedzieć się, jak z niego korzystać we właściwy sposób (również w MSIE!). Możesz nawet zdecydować się na wyodrębnienie FileUpload, aby można było trzymać się przy użyciu zwykłego sposobu: HttpServletRequest#getParameter() i ${param}, zobacz także this article.

Jeśli jesteś już w Servlet 3.0, możesz po prostu skorzystać z HttpServletRequest#getParts(). Można go nawet odciąć, tak aby można było trzymać się przy użyciu zwykłego sposobu: HttpServletRequest#getParameter() i ${param}, zobacz także this article.

Update 3: Och, naprawdę nie chcą używać JSP zrobić wszystko przetwarzanie. Tam nie jest. Czas się nauczyć Servlet. Poza tym, gdy używasz Filter, który umieszcza wszystkie parametry z treści żądania z powrotem w mapie parametrów żądania (jak opisano w obu artykułach), niekoniecznie potrzebujesz także Servlet.

+0

Nadal nie działa, element wejściowy miał już nazwę "id1". Wszystkie moje dane wejściowe mają nazwę, ale nie mogę uzyskać żadnego z nich przez $ {param.XXX} czy jest to związane z tym, że formularzem jest "enctype =" multipart/form-data "? – framara

+0

Nie zrozumiałem w pełni aktualizacji 3, ty oznacza, że ​​nie ma sposobu, aby dowiedzieć się z tego samego .jsp wartość elementu wejściowego, jeśli formularz jest enctype = "wieloczęściowy/formularz danych"? – framara

+1

Nie używać JSP dla logiki biznesowej.Jest to tylko rachunek za kłopoty. Surowy kod Java należy do prawdziwych klas Java. – BalusC

Powiązane problemy