Ich möchte ein Textfeld nach einer IF-Abfrage ggf. auf "required" setzen. Das hier funktioniert leider nicht:
<f:form.textfield name="{fieldName -> f:format.urlencode()}" required="{f:if(then: '{fieldRequired}', else: '', condition: '{fieldRequired}')}" class="{f:if(then: '{fieldClass}', else: '', condition: '{fieldClass}')}" />
Obwohl es mit "class" funktionier, wird required immer gesetzt, egal ob "fieldRequired" TRUE oder FALSE ist. Das kommt wohl daher, dass das Required-Argument anders, als die anderen Argument, vom Typ "boolean" ist. Da reicht es, required="" zu schreiben, um das Feld auf required zu setzen.
Nun frage ich mich, ob ich mit einem Inline-IF zum Ziel kommen kann? Das funktioniert auch nicht, da wird das Textfield gar nicht generiert:
<f:form.textfield name="{fieldName -> f:format.urlencode()}" {f:if(then: 'required="required"', else: '', condition: '{fieldRequired}')}" class="{f:if(then: '{fieldClass}', else: '', condition: '{fieldClass}')}" />
Zur Zeit nutze ich diese Schreibweise, die das Template aber aufbläht:
<f:if condition="{data.required}">
<f:then>
<label><f:format.htmlspecialchars>{data.label}</f:format.htmlspecialchars> *Required</label>
<f:form.textfield name="{fieldName -> f:format.urlencode()}" required="required" class="{f:if(then: '{fieldClass}', else: '', condition: '{fieldClass}')}" />
</f:then>
<f:else>
<label><f:format.htmlspecialchars>{data.label}</f:format.htmlspecialchars></label>
<f:form.textfield name="{fieldName -> f:format.urlencode()}" class="{f:if(then: '{wert.dependencyClass}', else: '', condition: '{wert.dependencyClass}')}" />
</f:else>
</f:if>