Toon posts:

[JSP] Verschillende kleuren op elke rij

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey,

Ik ben momenteel bezig om d.m.v. JSP en Domino gegevens uit een lotus domino database te halen. Dit is gelukt, de gegevens worden er uitgehaald.

Alle gegevens worden in rijen in een tabel weergegeven. Wat ik nu eigenlijk wil is dat bijvoorbeeld de "even" rijen een wat donkere kleur hebben dan de "oneven " rijen.

bijv:

----------------------
Rij 1 (wit)
----------------------
Rij 2 (grijs)
----------------------
Rij 3 (wit)
----------------------
Rij 4 (grijs)
----------------------
Rij 5 (wit)
----------------------

etc etc.

Het is mischien een simpele vraag, maar ik kom er maar niet uit. Wie kan me helpen?

Grt,

Wouter

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 24-11-2025

PommeFritz

...geen friet

beetje basic... geef de even <tr style="licht"> en de oneven <tr style="donker"> of whatever en dan in je CSS de juiste kleur voor tr.licht en tr.donker definieren.

FireFox - neem het web in eigen hand


  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 27-05 08:03
dat is niet zo heel lastig, een oplossing zou kunnen zijn:

Maak twee classen aan voor de tabelrij is je style sheet.
voor het loopje definieer je een variabele die de class bepaald en die laat je na het wegschrijven van de tabelrij met een if statement veranderen ( if $class==1 then $class=2 else $class=1 ).

Thats it.

  • Vaudtje
  • Registratie: April 2002
  • Niet online
Ik neem aan dat je een (custom) itererende JSP tag gebruikt om een rij te voorschijn te toveren.

Dan is het zeer eenvoudig, houd in de tag ff bij of het een even of oneven rij is, en zet het kleurtje vervolgens goed.
Daarna:
even = !even;
en je blijft zo over je <jsp:row/> tag itereren

[ Voor 3% gewijzigd door Vaudtje op 03-03-2004 18:24 ]

In deeze zin staan drie fauten


Verwijderd

meer zelfs...
maak een array met alle mogelijke kleuren:

String[] kleuren = new String[5];
//initialiseer je kleuren

en dan:

(ik ken de JSP tags niet, maar het loopen kun je zelf wel)

int teller = 0;
int aantal = kleuren.length;
while(watjemoettoenen.hasNext()){
tetonen = watjemoettoenen.next();
<struts:tag cssclass = kleuren[lengt%i(++)]; .. />

}


snap je? Je neemt gewoon steeds het volgende element uit de array. Zo kun je zeer gemakkelijk kleuren toevoegen/wegnemen.

Verwijderd

Topicstarter
Ik heb nu het volgende in mijn JSP pagina (het is niet de hele pagina maar een onderdeel:

--------------------------------------------------------

<domino:view
viewname="viewDeelnemers">

<jsp:scriptlet>boolean kleur = true;</jsp:scriptlet>

<domino:page
rows="15" >

<domino:viewloop>

<jsp:text><tr class="</jsp:text>
<jsp:expression>kleur ? "tr-odd" : "tr-even"</jsp:expression>
<jsp:text>"></jsp:text>

<td><domino:viewitem col="2" /></td>
<td width="2" />
<td><domino:viewitem col="3" /></td>
<td width="2" />
<td><domino:viewitem col="4" /></td>
<td width="10" />
<td><domino:viewitem col="6" /></td>
<td width="10" />
<td><domino:viewitem col="1" /></td>

<jsp:scriptlet>kleur = !kleur;</jsp:scriptlet>

</tr>

</domino:viewloop>
<tr>
<td height="10"/>
</tr>
<tr>
<td><domino:pageprev text="Vorige" /></td>
<td />
<td />
<td />
<td><domino:pagebar navstyle="nextprev" pages="5" /></td>
<td />
<td />
<td />
<td align="right"><domino:pagenext text="Volgende" /></td>
</tr>

</domino:page>

</domino:view>

--------------------------------------------------------

En in mijn CSS heb ik het volgende toegevoegd:

.tr-odd{
background-color: #800000;
}

.tr-even{
background-color: #FFFFFF;
}

--------------------------------------------------------

De CSS is volgens mij wel in orde, over mijn JSP pagina heb ik mijn twijfels. Ik krijg ook een foutmelding. Iemand een idee waarom? Ik draai het op een tomcat server (versie 4.1), en ik doe dit lokaal.

Iedergeval bedankt voor de voorgaande antwoorden, het heeft me al wat hulp opgeleverd.

Grt,

Wouter

Verwijderd

Topicstarter
Ik weet volgens mij al wat ik verkeerd heb gedaan. De JSP pagina is nu gemaakt voor combinatie met XSL, maar dat gebruik ik eigenlijk helemaal niet. Ik had het even helemaal verkeerd uitgedacht. 8)7

Iemand een goede oplossing voor mijn probleem?

Wouter

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:27

Creepy

Tactical Espionage Splatterer

Tja...

Je krijgt een foutmelding. Ok, maar welke is dat dan? Is dat nog op een speciale regel?

Weet je zeker dat die jsp code goed wordt geparst voor het genereren van je <tr> tags?

[ Voor 32% gewijzigd door Creepy op 04-03-2004 09:45 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ik krijg inderdaad een foutmelding, ik heb hem maar voor het gemak even helemaal gekopieerd:

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /web/viewDeelnemers.jsp(52,9) jsp.error.badaction
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:94)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:428)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:126)
at org.apache.jasper.compiler.Parser.parseAction(Parser.java:671)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:803)
at org.apache.jasper.compiler.Parser.parseBody(Parser.java:833)
at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:753)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:804)
at org.apache.jasper.compiler.Parser.parseBody(Parser.java:833)
at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:753)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:804)
at org.apache.jasper.compiler.Parser.parseBody(Parser.java:833)
at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:753)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:804)
at org.apache.jasper.compiler.Parser.parse(Parser.java:122)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:199)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:153)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:227)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:369)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)


--------------------------------------------------------------------------------

Apache Tomcat/4.1.29


Het is dus een JasperException error, maar zoals gewoon zijn deze foutmeldingen altijd zo vaag.... :/ :)

Wouter

  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

/web/viewDeelnemers.jsp(52,9) jsp.error.badaction
Het lijkt me dat er iets fout zit in de buurt van regel 52..

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


Verwijderd

Topicstarter
Regel 52 is niks mis mee, deze is namelijk helemaal leeg/blank. Dat zijn typisch die foutmelding, je hebt er soms weinig aan.

Wouter

  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Ja, maar je krijgt een JSP Compiler error. Je zal dus moeten kijken of je geen ongeldige syntax gebruikt.

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • Vaudtje
  • Registratie: April 2002
  • Niet online
Verwijderd schreef op 04 maart 2004 @ 11:06:
Regel 52 is niks mis mee, deze is namelijk helemaal leeg/blank. Dat zijn typisch die foutmelding, je hebt er soms weinig aan.

Wouter
Die regelnummers verwijzen naar de servlet classes waar de JSP's naartoe gecompileerd worden.
Meestal kun je dan ook wel bij de .java files, die zitten dan ergens in de Tomcat directories geloof ik. (Sorry, heb ff geen JSP stuff bij de hand)
In die bestanden staat in commentaar op welke JSP regel de servlet regel van toepassing is. Op die manier kan je in twee stappen van de error naar je JSP

In deeze zin staan drie fauten


Verwijderd

Topicstarter
Bedankt voor de reacties, maar ik ga het denk ik met javascript proberen.

Met het volgende script:

-----------
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
     <script language="JavaScript" type="text/javascript">

          var TABLE_ROW_COLOR_DEFAULT = "#FFFFFF";
          var TABLE_ROW_COLOR_HILIGHT = "#800000";

          function stripeTableRows(tableObject,startRow) {
               
               var currentRowColor = "";
               for (var i = startRow; i < tableObject.rows.length; i++) {

                    currentRowColor = TABLE_ROW_COLOR_DEFAULT;

                    if (i % 2 == 0) {
                         currentRowColor = TABLE_ROW_COLOR_HILIGHT;
                    }
                    tableObject.rows[i].style.backgroundColor = currentRowColor;
               }
          }
          function configurePage() {
               stripeTableRows(document.getElementById("gegevens"),1);
          }
     </script>

De body roept hem vervolgens aan:
code:
1
<body onload="configurePage()">

En de mijn tabellen zien er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
    <table width="600">
            <tr>
                <td><hr /></td>
            </tr>
        </table>
        <table id="gegevens">
            <tr>        
                <td><b><u>Voornaam</u></b></td>
                <td width="2" />
                <td><b><u>Tussenvoegsel</u></b></td>
                <td width="2" />
                <td width="100"><b><u>Achternaam</u></b></td>
                <td width="10" />
                <td width="30"><b><u>Nationaliteit</u></b></td>
                <td width="10" />
                <td><b><u>E-Mail adres</u></b></td>
            </tr>
            <tr>
                <td></td>
            </tr>                   
                <domino:view
                    viewname="viewDeelnemers">
                
                <domino:page 
                    rows="15" >
                    
                    <domino:viewloop>
                    <tr>        
                        <td><domino:viewitem col="2" /></td>
                        <td width="2" />
                        <td><domino:viewitem col="3" /></td>
                        <td width="2" />
                        <td><domino:viewitem col="4" /></td>    
                        <td width="10" />
                        <td><domino:viewitem col="6" /></td>
                        <td width="10" />
                        <td><domino:viewitem col="1" /></td>
                    </tr>
                    </domino:viewloop>
                    <tr>
                        <td height="10"/>
                    </tr>
                    <tr>
                        <td><domino:pageprev text="Vorige" /></td>
                        <td />
                        <td />
                        <td />
                        <td><domino:pagebar navstyle="nextprev" pages="5" /></td>
                        <td />
                        <td />
                        <td />
                        <td align="right"><domino:pagenext text="Volgende" /></td>
                    </tr>
                    
                </domino:page>
                
                </domino:view>

        </table>


Maar omdat die meerdere tabellen bevat, werkt de script niet goed. Iemand nu een idee waar het aan zou kunnen liggen?

Wouter

[ Voor 24% gewijzigd door Verwijderd op 05-03-2004 12:18 ]


Verwijderd

Topicstarter
Niemand?

  • Banaan
  • Registratie: Maart 2000
  • Laatst online: 19-05 12:27
Hoewel ongetest denk ik dat dit toch aardig zou moeten werken:
(waarbij TableRowEven en TableRowOdd natuurlijk aanwezig zijn in je CSS)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    <% int i = 0; %>
                    
    <domino:viewloop>
    <%
        String classname = (i % 2 == 0)?"TableRowEven":"TableRowOdd"; 
        i++;
    %>
        <tr>        
            <td class="<%= classname %>"><domino:viewitem col="2" /></td>
            <td class="<%= classname %>" width="2" />
            <td class="<%= classname %>"><domino:viewitem col="3" /></td>
            <td class="<%= classname %>" width="2" />
            <td class="<%= classname %>"><domino:viewitem col="4" /></td>    
            <td class="<%= classname %>" width="10" />
            <td class="<%= classname %>"><domino:viewitem col="6" /></td>
            <td class="<%= classname %>" width="10" />
            <td class="<%= classname %>"><domino:viewitem col="1" /></td>
        </tr>
    </domino:viewloop>

Verwijderd

Topicstarter
Banaan,

Bedankt, jouw manier werkt helemaal correct. Alleen heb ik de classes niet geplaatst in de <td> maar in de <tr>. Dat was het enige, voor de rest werkt die uitstekend! :> :)

Wouter
Pagina: 1