JSF Textfarbe in der Bohne bestimmen

kingele

Mitglied
Hallo zusammen,

Gibt es eine einfach Möglichkeit Wörter und Phrasen in einem Text zu modifizieren?

Sprich ich habe einen Text:
"Heute esse ich Pasta" und ich möchte gerne in der Bohne sagen, dass Pasta rot geschrieben werden soll.

Ich hatte die Idee, einfach HTML Tags zu verwenden, die dann interpretiert werden, aber das klappt leider nicht so ganz, da diese mit ausgegeben werden.

Aktuell habe ich folgenden String:

"Heute esse ich <b> Pasta </b> "


Habt ihr eine Idee?

Danke und Gruß!
 

Attila

Bekanntes Mitglied
in JSF:
[XML]
<h:body>
<c:forEach var="styledWords" items="#{testWords.list}">
<h:eek:utputText value="#{styledWords.word} " style="#{styledWords.style}"/>
</c:forEach>
[/XML]

bean:
Java:
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class TestWords {

    private List<TestWords.StyledWord> list = new ArrayList<TestWords.StyledWord>();

    public List<TestWords.StyledWord> getList() {
        return list;
    }

    public TestWords(){
        list.add(new TestWords.StyledWord("Heute",""));
        list.add(new TestWords.StyledWord("esse",""));
        list.add(new TestWords.StyledWord("ich",""));
        list.add(new TestWords.StyledWord("Pasta","color:red"));
    }
    
    public static class StyledWord{
        private String word;
        private String style;

        public StyledWord(String word, String style) {
            this.word = word;
            this.style = style;
        }

        public String getWord() { return word; }
        public String getStyle() { return style; }
    }
}
 

kingele

Mitglied
Hi Attila,
Vielen Dank für deinen Tipp. gefällt mir an sich ganz gut.
Allerdings stehe ich gerade noch ein wenig auf der langen Leitung, wie ich das am besten bei mir implementieren kann.

Das "Problem" ist, dass ich einen String habe (z.B. "heute esse ich Pizza") und diesen via API an einen Server schicke.
Der Rückgabewert ist dann dieser "Heute esse ich <b> Pasta </b> ".
Während der Verarbeitung habe ich nur die Möglichkeit die Treffer zu verarbeiten (dem Array hinzuzufügen) An die andere Terme komme ich nicht ran.
D.h. ich muss die "Überführung" in die ArrayList auf durch den Rückgabewert realisieren.
Und hier liegt das Problem:
Ich habe unterschiedliche Inputs und Outputs. D.h. eine Splittung der Einzelterme auf Leerzeichenebene geht z.B. nicht, da der Input so aussehen kann "Heute esse ich:pizza". Und der Output kann z.B. so aussehen "<b>Heute esse</b> ich:pizza"

Ich könnte jetzt versuchen den großen String auf Basis der Tags zu zerschneiden und dann in das Array überführen.

Ooooder ich finden einen andere Lösung, z.B. indem ich HTML Elemente nutzen, wenn das irgnedwie Möglich ist?

DANKE!!
 

kingele

Mitglied
So könnte ich das für die erste Lösung machen.
in der if-else Verzweigung könnte ich dann die Zuweisung zum Objekt vornehmen.

Gruß

Java:
        String test = "ich esse heute <red>Pizza</red>, weil sie <pos>lecker schmeckt</pos> BASTA!";
        ArrayList<String> words = new ArrayList<String>();
            
        while(!test.equals("")){
            Integer a = test.indexOf("<pos>");
            Integer b = test.indexOf("</pos>");
            Integer c = test.indexOf("<re>");
            Integer d = test.indexOf("</red>");
            
            if (a != 0 && a != -1){
                String substr = test.substring(0, a);
                words.add(substr);
                test =  test.substring(a, test.length());
            }
            else if (a == 0 && b != -1){ //POS CASE 
                String substr = test.substring(0, b+6);
                words.add(substr);
                test = test.substring(b+6, test.length());
            } 
            else if (c != 0 && c != -1){
                String substr = test.substring(0, c);
                words.add(substr);
                test =  test.substring(c, test.length());
            }
            else if (c == 0 && d != -1){ //RED CASE 
                String substr = test.substring(0, d+6);
                words.add(substr);
                test = test.substring(d+6, test.length());
            } 
            else{
                String substr = test.substring(0, test.length());
                words.add(substr);
                test = "";
            }
        }
        System.out.println(words.size());
    }
 

kingele

Mitglied
eine Frage hätte ich allerdings doch noch ;)
Mir wird immer einen Zeilenumbruch reingelegt, wenn ich eine style setze.
D.h. am Ende siehts so aus:

"ich esse heute
<red>Pizza</red>,
weil sie
<pos>lecker schmeckt</pos>
BASTA!";

Gruß,
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JSP Parameter in die Bohne übergeben Web Tier 3

Ähnliche Java Themen

Neue Themen


Oben