s:textfield in Struts nebeneinander positionieren

Tservarius

Mitglied
Und wieder mal eine Struts2 Geschichte:

Wie schaffe ich es, <s:textfield .../> elemente innerhalb einer <s:form ...> so zu positionieren, dass diese nebeneinander liegen? also z.b. textfeld für vorname links, textfeld für den nachnamen rechts. Submit Button unter den beiden.

Aus den s:tags generiert struts ja automatisch den java-code, welcher sich dann auch per css anpassen lässt, aber eine art und weise, wie man das zwei zeilen, zwei spalten layout in ein layout: 1 zeile 4 spalten ändern kann, ist mir bislang verborgen geblieben.

weis jemand rat ?
 
Hallo,

Struts 2 packt alle seine UI-Tags automatisch in ein zweispaltiges Design und verwendet dafür HTML-Tabellen, was etwas antiquiert ist.

Genauer:
das <s:form>/</s:form> Tag bildet den Tabellenkörper und wird als HTML <table></table> gerendert;
die einzelnen UI-Tags, z.B. <s:textfield> werden automatisch in ein <tr>-Element eingebettet, wobei Label und Eingabefeld noch je von einen <td> Element eingerahmt werden.

Schau Dir mal den Seitenquelltext Deiner JSP an, dann siehst Du schnell, was ich meine.

Du kannst das beeinflussen, indem Du Dich entweder mit dem Um- bzw. Neuschreiben der Struts-Tags befasst (da habe ich mich bislang nur rudimentär herangewagt) oder indem Du jedes UI-Tag seinerseits in eine Tabelle einbettest und diese am besten noch mit einem <div> umschließt, um Dich in Sachen Layout am CSS Box-Modell halten zu können.

Beispiel:
Code:
<s:form>
  <tr><td>
    <div class="fieldbox">
      <table>
        <s:textfield name="vorname"/>
      </table>
    </div>
    <div class="fieldbox">
      <table>
        <s:textfield name="nachname"/>
      </table>
    </div>
  </td></tr>
</s:form>

Sieht zwar ein bisschen kompliziert aus, aber man könnte ja auch solche standardisierte Blöcke mit <jsp:include file="" /> in JSP-Fragmente auslagern.

Den Submit-Button rahmst Du genau so in eine <div><table>-Kombination ein. Notfalls kannst Du auch wieder die Tabelle des <s:form> Tags nutzen und eine neue Zeile einsetzen.

Ich hoffe, das hilft weiter.

MfG
 

Neue Beiträge

Zurück