Jak mogę sprawdzić wartość z atrybutu żądania w freemarker? Próbowałem < #if * $ {RequestParameters [ 'servicesettings']} ??> ale otrzymuję błędy ->Pobieranie atrybutów żądania w freemarker
napotkał "*" na linii
Czy ktoś może pomóc?
Jak mogę sprawdzić wartość z atrybutu żądania w freemarker? Próbowałem < #if * $ {RequestParameters [ 'servicesettings']} ??> ale otrzymuję błędy ->Pobieranie atrybutów żądania w freemarker
napotkał "*" na linii
Czy ktoś może pomóc?
To zależy od struktury aplikacji WWW, ponieważ sam FreeMarker nie ujawnia parametrów żądania. (No cóż, z wyjątkiem sytuacji, gdy struktura używa freemareker.ext.servlet.FreemarkerServlet
, która jest rodzajem rozszerzenia do FreeMarker.) Ponadto, zazwyczaj nie powinieneś uzyskiwać dostępu do parametrów żądania bezpośrednio z szablonu MVC, ani niczego, co jest specyficzne dla HTTP/Servlet.
Po wyświetleniu komunikatu o błędzie napisałeś kilka błędów składniowych ... prawdopodobnie oznaczałeś <#if RequestParameters.servicesettings??>
(nie jest to JSP - nie używaj ${...}
-s wewnątrz znaczników FreeMarker). Wymaga to, że masz RequestParameters
w segmencie danych modelu, że nie może wiedzieć na pewno ...
Powinniśmy napisać tak:
${Request.requestattribute}
<#if RequestParameters.servicesettings ??> – zDroid
Można użyć
${requestParameters.servicesettings}.
Według JavaDoc of the FreemarkerServlet
:
To sprawia, że wszystkie żądania, parametry żądania, sesji i kontekstu serwletu atrybuty Ava można przekształcać w szablony za pomocą zmiennych
Request
,RequestParameters
, iApplication
.Zmienne zasięgu są również dostępne za pośrednictwem automatycznego wykrywania zakresu. Oznacza to, że pisanie
Application.attrName
,Session.attrName
,Request.attrName
nie jest obowiązkowe; wystarczy napisaćattrName
, a jeśli taka zmienna nie została utworzona w szablonie, przeszuka zmienną wRequest
, a następnie wSession
, a na końcu wApplication
.
można po prostu napisać:
${attrName}
aby uzyskać wartość atrybutu żądania (które mogły zostać ustawione w filtrze żądanie serwletu przy użyciu request.setAttribute('attrName', 'value')
pracował dla mnie z Freemarker 2.3.27-incubating
Mam to, działa dla mnie try -> Request.requestattribute; zwróci atrybut żądania i RequestParameters.somevalue dla parametru .. – zDroid