2010-01-18 1 views
5

Ich habe vor kurzer Zeit mit JSP, JSTL, HTML und JavaScript so hier ist mein Problem:set var Wert von Eingabefeld Wert

ich den Wert eines var den Wert eines Eingangs versteckt einstellen müssen. Andere Möglichkeit ist, wenn es möglich

<c:if test="...."> 

der Wert einer Variablen zu vergleichen mit, die ich mit der Bitte, mit dem Wert des verborgenen Eingangs gesendet.

Danke.

aktualisieren

Ich habe versucht, aber kann es nicht funktioniert.

Ich habe dieses Feld, das die ID von und Objekt enthält. Ich habe auch die Liste mit den Objekten, also was ich zu tun habe, ist das Objekt zu finden, das zu dieser ID gehört.

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

aber wenn ich dies tun:

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

Der eingegebene Text ist leer, aber der Text id1 zeigt 850 bezogen (dh der Wert dinamic ist)

Jeder Vorschlag, warum nicht funktioniert ?

Update 2

Ich brauche die "multipart/form-data", weil in Form ich ein Bild hochladen müssen. Ich verstehe, wie man die Parameter von Java bekommt, aber da ich nicht den Server, sondern die JSP-Seiten verwende, gibt es eine Möglichkeit, dies zu tun? Sie müssen dieses Eingabeelement nur lesen und in einer Variablen speichern.

Antwort

3

Sie können auf Anforderungsparameter über die implizite Variable ${param} zugreifen.

z. http://example.com/context/page.jsp?foo=bar in Kombination mit

<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> 

würde die erste Bedingung zeigen.

Wenn Sie tatsächlich ein verstecktes Eingabeelement in nachfolgenden Anforderungen beibehalten mögen (was nicht wirklich in Frage klar gemacht wurde), dann alles, was Sie im Grunde tun müssen, ist:

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

aktualisieren: Gemäß Ihrem Update: Sie müssen dem Eingangselement auch einen Namen geben. Somit, z.B.

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

diese Weise ist es durch request.getParameter("id1") und von Natur aus auch ${param.id1} verfügbar ist. Siehst du es jetzt?

Update 2: nach Ihrem Kommentar hier: sicherlich ist dies mit enctype="multipart/form-data" verwandt. Bei dieser Kodierung befinden sich die Request-Parameter nicht mehr in der Parameter-Map, sondern im Request-Body, da diese mit binären Daten verwechselt werden (File Uploads).Es wird eine lange Geschichte sein, um alles zu erklären, aber im Grunde müssen Sie die Anfrage selbst analysieren. Wenn Sie auf Servlet 2.5 oder älter sind, dann ist die hier sehr hilfreich. Lesen Sie besonders "User Guide" und "Frequently Asked Questions" dort nach, um Codebeispiele zu sehen und zu lernen, wie man es richtig benutzt (auch in MSIE!). Sie können sogar entscheiden, den FileUpload wegzusortieren, so dass Sie mit HttpServletRequest#getParameter() und ${param} auf die übliche Weise bleiben können, siehe auch this article. Wenn Sie bereits Servlet 3.0 verwenden, können Sie einfach HttpServletRequest#getParts() verwenden. Sie können es sogar weg abstrahieren, so dass Sie mit HttpServletRequest#getParameter() und ${param} auf die übliche Weise bleiben können, siehe auch this article.

Update 3: Oh, du wirklich wollen nicht JSP verwenden, die gesamte Verarbeitung zu tun. Da ist es nicht für. Es ist höchste Zeit zu lernen Servlet. Wenn Sie außerdem eine Filter verwenden, die alle Parameter aus dem Anfragetext in die Anforderungs-Parameterzuordnung zurücksetzt (wie in den beiden Artikeln beschrieben), benötigen Sie auch nicht zwingend eine Servlet.

+0

Immer noch nicht funktioniert, das Eingabeelement hatte bereits den Namen "id1". Alle meine Eingaben haben einen Namen, aber können sie nicht von $ {param.XXX} bekommen. Ist es damit verbunden, dass das Formular "enctype =" multipart/form-data "ist? – framara

+0

Ich habe das Update3 nicht vollständig verstanden, Sie Das heißt, es gibt keine Möglichkeit, aus genau demselben .jsp den Wert eines Eingabeelements zu kennen, wenn das Formular enctype = "multipart/form-data" ist? – framara

+1

Verwenden Sie JSP nicht für Geschäftslogik. Es ist nur ein Empfang für Probleme. Raw Java-Code gehört in echte Java-Klassen. – BalusC