где находятся циклические переменные #list в мастере Netbeans freemarker - PullRequest
0 голосов
/ 28 ноября 2018

Я использую бесплатный маркер netbeans для генерации страниц JSF из классов Entity.в файле list.ftl у меня есть

 <#list entityDescriptors as entityDescriptor>
                        <#if entityDescriptor.id != "id" && entityDescriptor.id != "version">
                        <div class="ui-g-12 ui-md-6 ui-lg-4">
                                <p:outputLabel styleClass="template-labels" 
                                    value="${r"#{"}${bundle}.${entityDescriptor.id?replace(".","_")}${r"}"}" for="@next" />
                            <#if entityDescriptor.dateTimeFormat?? && entityDescriptor.dateTimeFormat != "">
                            <p:inputMask mask="9999/99/99" id="${entityName}_editForm_${entityDescriptor.id?replace(".","_")}" value="${r"#{"}${managedBean}.selected${entityName}.${entityDescriptor.name?replace("item.","")}${r"}"}" 
                                         converter="JalaliDateConverter" onfocus="serp.showDatePicker(this)" styleClass="PersianDate template-fields" title="${r"#{"}${bundle}.${entityDescriptor.id?replace(".","_")}${r"}"}"
                                         disabled="${r"#{"}!${managedBean}.${entityName?uncap_first}Editable${r"}"}"/>
                            <#elseif entityDescriptor.returnType?matches(".*[Bb]+oolean")>
                            <p:selectBooleanCheckbox styleClass="template-fields" id="${entityName}_editForm_${entityDescriptor.id?replace(".","_")}" 
                                                     value="${r"#{"}${managedBean}.selected${entityName}.${entityDescriptor.name?replace("item.","")}${r"}"}"
                                                     disabled="${r"#{"}!${managedBean}.${entityName?uncap_first}Editable${r"}"}"/>
                            <#elseif entityDescriptor.blob>
                            <p:inputTextarea styleClass="template-fields" id="${entityName}_editForm_textArea" rows="4" cols="30" id="${entityDescriptor.id?replace(".","_")}" 
                                             value="${r"#{"}${entityDescriptor.name}${r"}"}" title="${r"#{"}${bundle}.${entityDescriptor.id?replace(".","_")}${r"}"}"
                                             disabled="${r"#{"}!${managedBean}.${entityName?uncap_first}Editable${r"}"}"/>
                            <#elseif entityDescriptor.relationshipOne>
                            <p:selectOneMenu styleClass="template-fields" id="${entityName}_editForm_${entityDescriptor.id?replace(".","_")}" value="${r"#{"}${managedBean}.selected${entityName}.${entityDescriptor.name?replace("item.","")}${r"}"}"
                                             disabled="${r"#{"}!${managedBean}.${entityName?uncap_first}Editable${r"}"}">
                                <f:selectItem itemLabel="${r"#{"}${bundle}.SelectOneMessage${r"}"}"/>
                                <f:selectItems value="${r"#{"}${entityDescriptor.valuesGetter}${r"}"}" var="${entityDescriptor.id?replace(".","_")}Item" itemValue="${r"#{"}${entityDescriptor.id?replace(".","_")}Item${r"}"}" itemLabel="${r"#{"}${entityDescriptor.id?replace(".","_")}Item.name${r"}"}"/>
                            </p:selectOneMenu>
                            <#elseif entityDescriptor.relationshipMany>
                            <p:selectManyMenu styleClass="template-fields" id="${entityName}_editForm_${entityDescriptor.id?replace(".","_")}" value="${r"#{"}${entityDescriptor.name}${r"}"}"
                                              disabled="${r"#{"}!${managedBean}.${entityName?uncap_first}Editable${r"}"}">
                                <f:selectItems value="${r"#{"}${entityDescriptor.valuesGetter}${r"}"}" var="${entityDescriptor.id?replace(".","_")}Item" itemValue="${r"#{"}${entityDescriptor.id?replace(".","_")}Item${r"}"}"/>
                            </p:selectManyMenu>
                        <#elseif entityDescriptor.id != "id" && entityDescriptor.id != "version">
</#list>

entityDescriptor имеет поля типа entityDescriptor.blob или entityDescriptor.relationshipOne, где я могу найти такие возможные переменные, как blob, id, valuesGetter или relationsOne?Я проверил источник freemarker.jar и документацию к его веб-сайту, но, похоже, это скорее связано с мастером netbeans.

ps: я ищу, чтобы найти условие ManyToMany, и спросил его, прежде чем оно было неопределенным или вводящим в заблуждениев любом случае.

1 Ответ

0 голосов
/ 29 ноября 2018

Это зависит от деталей реализации модели данных, но обычно, если вы можете сделать entityDescriptor.blob, тогда entityDescriptor?keys должен дать список, который содержит "blob" среди других.Идея заключается в том, что в FTL entityDescriptor.blob и entityDescriptor["blob"] абсолютно одинаковы, поэтому entityDescriptor похоже на Map с String клавишами (даже если это не обязательно Map, FTL видит этоаналогично этому).Следовательно, вы можете даже перечислить пары ключ-значение как <#list entityDescriptor as k, v>, как вы, естественно, ожидаете от Map -подобного объекта.

...