Стойността на JSF компонента не е актуализирана правилно за модел при изпращане

Имам facelets страница с контрола, която обикновено е деактивирана по подразбиране, т.е. д. когато страницата се визуализира за първи път на клиента. Това се определя от EL израз:

disabled="#{referenceValue != requestbean.dependentControlValue}" id="notWorking"

След като страницата бъде изобразена, потребителят може да зададе requestbean.dependentControlValue на referenceValue и чрез някакъв Javascript за зависим контрол, компонентът "notWorking" е активиран.

Въпреки това, при подаване на формуляра стойността за notWorking не се актуализира, както беше установено чрез добавяне на съобщение за регистър за отстраняване на грешки в инструмента за настройка за стойността. Виждам, че стойността за notWorking е зададена в заявката, когато я проверявам с firefox.

Въпрос: Какво правя грешно?

Между другото:
Знам, че според HTML спецификацията деактивираните контроли не могат да бъдат успешни благодарение на изследванията тук в StackOverflow.

Освен това знам от тази публикация, че изразите disabled и rendered се вземат предвид преди актуализирането на стойностите на модела, но мисля, че деактивираният израз трябва да се изчисли на false при изпращане на формуляра.


person omilke    schedule 05.08.2013    source източник


Отговори (1)


Какво правя грешно?

Използване на JavaScript вместо JSF за повторно активиране на въвеждането.

Като част от вградената защита на JSF срещу манипулирани/хакнати HTTP заявки, атрибутът disabled се преоценява (както атрибутите rendered и readonly) по време на обработката на изпратения формуляр. Ако те оценят по такъв начин, че стойността изобщо не трябва да се обработва (т.е. disabled/readonly=true и rendered=false, тогава изпратената стойност няма да бъде приложена, преобразувана, валидирана и моделът няма да бъде актуализиран.

Решението би било да се използва JSF вместо JavaScript за повторно активиране на въвеждането или да се пренапише условието в атрибута disabled по такъв начин, че атрибутът disabled да оценява false по време на обработката на изпращането на формуляра.

person BalusC    schedule 05.08.2013
comment
Благодаря @BalusC, особено за преразглеждането на отговора ви, за да отговорите точно на моя въпрос. Така че, използвайки jsf 2, просто бих използвал частична заявка, задействана от зависим контрол с повторно изобразяване на компонента notWorking. Как мога да внедря вашето решение с jsf1.2? - person omilke; 06.08.2013