Próbuję napisać mechanizm renderujący, który przetworzy atrybut placeholder
na składniku <h:inputText>
. Udałem się na tę ścieżkę po przeczytaniu JSF 2.0 strips out needed HTML5 attributes i wydaje się poprawne. Oto mój niestandardowy mechanizm renderującyDodawanie obsługi atrybutów niestandardowych (HTML5) do składnika JSF 2.0 UIInput
public class InputRenderer extends com.sun.faces.renderkit.html_basic.TextRenderer{
@Override
public void encodeBegin(FacesContext context, UIComponent component)
throws IOException {
System.out.println("Rendering :"+component.getClientId());
String placeholder = (String)component.getAttributes().get("placeholder");
if(placeholder != null) {
ResponseWriter writer = context.getResponseWriter();
writer.writeAttribute("placeholder", placeholder, "placeholder");
}
super.encodeBegin(context, component);
}
@Override
public void decode(FacesContext context, UIComponent component) {
super.decode(context, component);
}
@Override
public void encodeEnd(FacesContext context, UIComponent component)
throws IOException {
super.encodeEnd(context, component);
}
}
I to renderer jest zarejestrowany w twarze config jak
<render-kit>
<renderer>
<component-family>javax.faces.Input</component-family>
<renderer-type>javax.faces.Text</renderer-type>
<renderer-class>com.example.renderer.InputRenderer</renderer-class>
</renderer>
</render-kit>
ten zostanie zarejestrowany w porządku, nie ma problemów.
Moim zamiarem jest przetworzenie atrybutu placeholder
, wstawienie go, a następnie przekazanie przetwarzania do super. Powyższy kod nie działa, ponieważ wstawiam atrybut w niewłaściwym miejscu. Musi zostać wstawiony po wykonaniu writer.startElement('input')
. Jednak startElement musi się odbywać gdzieś w metodzie super-super-encodeBegin()
. Więc jak wstawić niestandardowy atrybut ("symbol zastępczy" w tym przypadku), a następnie kontynuować przepływ wykonywania?
NB: Powyższy kod dodaje atrybut placeholder
, ale nie odnosi się do komponentu wejściowego, który zamierzam, Zapisuje go do elementu nadrzędnego wpisu (ponieważ próbuję wpisać atrybut, zanim sam komponent zostanie faktycznie użyty zapisany w strumieniu, stosuje atrybut do bieżącego komponentu)
Jest to zdecydowanie najbardziej praktyczna i najlepsza odpowiedź! :) – Nikhil
Dzięki za odpowiedź i chociaż jest to rzetelna odpowiedź, kod ma błąd. Zwrot get (atrybut) jest obiektem, który może być wartością logiczną (należy na przykład uwzględnić atrybut "required"). Usuń całkowicie (String) i ustaw typ powrotu jako Object. –
Należy zauważyć, że to nie działa z '' rodzicem z '' dziećmi. JSF umieszcza atrybut 'required' w elemencie' 'zamiast' '. Czy powiedziałem, że kocham JSF? –
6
+0
2
+0
Powiązane problemy
-
1. Dodawanie obsługi atrybutów niestandardowych (HTML5) do Primefaces (3.4)
-
2. Przekazywanie atrybutów niestandardowych do składnika Aurelia Komponent
-
3. Dodawanie niestandardowych atrybutów do elementów pierwotnych Komponent autouzupełniania w JSF
-
4. Dodawanie niestandardowych atrybutów do zadania?
-
5. Dodawanie atrybutów niestandardowych do kontrolki asp: CheckBox
-
6. Dodawanie atrybutów niestandardowych do mapy ASP.NET MVC
-
7. JSF 2.0 usuwa wymagane atrybuty HTML5
-
8. Dodawanie niestandardowych atrybutów obrazu szyny obrazu
-
9. Dodawanie niestandardowych atrybutów za pomocą mono.cecil?
-
10. Dodawanie niestandardowych atrybutów produktu w Magento przy użyciu skryptu konfiguracyjnego
-
11. Internacjonalizacja w JSF 2.0
-
12. Dodawanie atrybutów do węzła XML
-
13. Dodawanie atrybutów do typu pochodnego
-
14. Dodawanie atrybutów do testowania kuchni
-
15. Jak dodać dokumentację do niestandardowych atrybutów?
-
16. JSF 2.0 Korzystanie z Eclipse?
-
17. Dane HTML5 - reguły atrybutów?
-
18. Jak przesłonić obsługi sygnału składnika nadklasy
-
19. Niewidzialne komentarze w jsf 2.0?
-
20. JSF 2.0 RenderResponse i ResponseComplete
-
21. Podaj mi samouczek JSF 2.0
-
22. Dojo: przekazywanie parametrów niestandardowych do obsługi zdarzeń
-
23. Dodawanie dynamicznych elementów rozwijanych w JSF
-
24. Dodawanie niestandardowych znaczników html do Intellij?
-
25. Dodawanie niestandardowych funkcji do umieszczenia na lodzie
-
26. Dodawanie niestandardowych typów struktur do strace
-
27. Pytanie do bazy Umbraco - Dodawanie niestandardowych tabel
-
28. Dodawanie niestandardowych ikon do niesamowitych czcionek
-
29. Dodawanie niestandardowych reguł sprawdzania poprawności do SonataUserBundle
-
30. Dodawanie niestandardowych przycisków do edytora WMD
Ostatnie pytanie
-
1. Lista wszystkich aktywnych metod w jshell
-
2. ElasticSearch - nagłówek Content-Type [application/x-www-form-urlencoded] nie jest obsługiwany
-
3. Jak powiększać diagram jsPlumb
-
4. isInitialized - Pole kopii lateinit var jest niedostępne w tym momencie
-
5. Nie można dołączyć metadane do Google Cloud Storage używając NodeJS API
-
6. Jak połączyć wszystkie elementy listy z innej tabeli danych pod warunkiem
-
7. Jak wymusić ansibli, aby ponowić zadanie "apt", jeśli się nie powiedzie?
-
8. FreePBX Twilio Outbound Ringtone
-
9. AudioHardware.cpp: 1200: AudioObjectRemovePropertyListener: AudioObjectRemovePropertyListener: żaden obiekt o podanym ID 0
-
10. W Angular rxjs, kiedy powinienem użyć `pipe` kontra` map`
-
1. Dodawanie obsługi atrybutów niestandardowych (HTML5) do Primefaces (3.4)
-
2. Przekazywanie atrybutów niestandardowych do składnika Aurelia Komponent
-
3. Dodawanie niestandardowych atrybutów do elementów pierwotnych Komponent autouzupełniania w JSF
-
4. Dodawanie niestandardowych atrybutów do zadania?
-
5. Dodawanie atrybutów niestandardowych do kontrolki asp: CheckBox
-
6. Dodawanie atrybutów niestandardowych do mapy ASP.NET MVC
-
7. JSF 2.0 usuwa wymagane atrybuty HTML5
-
8. Dodawanie niestandardowych atrybutów obrazu szyny obrazu
-
9. Dodawanie niestandardowych atrybutów za pomocą mono.cecil?
-
10. Dodawanie niestandardowych atrybutów produktu w Magento przy użyciu skryptu konfiguracyjnego
Można po prostu przesłonić metodę startElement ResponseWoice, ta metoda jest wywoływana tylko raz, a następnie można przywrócić oryginalny obiekt odpowiedzi.
Źródło
2011-10-25 08:59:30 dileks
Powyższy działa lepiej (choć brakuje niektórych importu, poprawiłam getWrapped() jak w JSF 1.2 jest już publiczna, itp). Myślę, że to najlepsza odpowiedź. Prawdopodobnie lepiej jest też użyć, jeśli ("stała" .equals (wartość)), która obsługuje zerową kontrolę, ponieważ stała nigdy nie będzie równa zeru, ale nie spowoduje NPE. Oficjalnie gardzę splotem JSF jako lepszej alternatywy, ale doceniam wszystkie dobre opinie tutaj (dzięki Joelowi za wsparcie StackOverflow). –
I przesłonić dla MyFaces 2.0.8+
Źródło
2013-12-13 05:36:08 Madhuri
Dla tych, którzy czytają zbyt szybko, potrzebujesz również znacznika z góry w swoim plik faces-config.xml. –
Powiązane problemy