webForumDet fria alternativet

Problem med if-sats

7 svar · 336 visningar · startad av tosses

tossesMedlem sedan aug. 2003190 inlägg
#1

Tja!

Jag har ett litet problem med en ifsats i det fantastiskt underbara programmeringsspråket Java -- (I JSP egentligen).

symbol  : variable i 
    [javac] location: class org.apache.jsp.resultat_jsp
    [javac] if(i == rslt.getString("Fenkelbranch")){
    [javac]    ^
    [javac] 1 error

Jag har deklarerat i -- String i = "knutsson";

kan jag inte använda mig av i ???

ViktorMedlem sedan aug. 20021 710 inlägg
#2

Kan du lägga ut koden där problemet finns, det är lättare att hitta felet då :)

Om du vill kolla om en sträng är lika med en annan sträng så kan du inte köra med ==, det gämför bara adressen för de olika objekten. Du måste använda equals

if(i.equals(rslt.getString("Fenkelbranch"))){

Men jag tror inte det är anledningen till detta felmedelande utan det är något annat.

/Viktor

tossesMedlem sedan aug. 2003190 inlägg
#3
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>

<%
if(session.getAttribute("pu")!=request.getParameter("p")){
session.setAttribute("pu", request.getParameter("p"));
}
if(request.getParameter("i")==null){
String i = "Knutsson";
} else {
String i = request.getParameter("i");
}
%>

<html>
<head>
	<title>Untitled</title>
<style>
A:link { text-decoration: none; color: #ff0000; }
A:visited { text-decoration: none; color: #ff0000; }
A:active { text-decoration: none; color:#0000ff; }
A:hover { text-decoration: none; color: #00ff00; }
</style>

<script language="javascript">

function selectItem(obj,word){
var empty = ''
if (document.adv.vSearchText.value.search(word) != -1){
document.adv.vSearchText.value=document.adv.vSearchText.value.replace('+'+word, empty)
document.adv.vSearchText.value=document.adv.vSearchText.value.replace(word+'+', empty)
document.adv.vSearchText.value=document.adv.vSearchText.value.replace(word, empty)
}
else{
if (document.adv.vSearchText.value==''){
document.adv.vSearchText.value=document.adv.vSearchText.value+word
}
else{
document.adv.vSearchText.value=document.adv.vSearchText.value+'+'+word
}
}
if (document.adv.vSearchText.value.search(word)==-1){
obj.bgColor = '#eeeeee'
}
else{
obj.bgColor = '#A5A5A5'
}
}
</script>

</head>
<body>
<%if(session.getAttribute("pu")=="branch"){

String Fenkelbranch, Kod;

Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection visaConn = DriverManager.getConnection("jdbc:mysql:///steget?user=steget&password=ujujuj");
Statement visaStmt = visaConn.createStatement();
String visaQr = "SELECT sni92.Fenkelbranch, sni92.Kod FROM sni92 GROUP BY sni92.Fenkelbranch";
ResultSet rslt = visaStmt.executeQuery(visaQr);%>

<table border="0" cellpadding="1" cellspacing="0">
<%while(rslt.next()){%>
<tr>
<td>
<%try {
if(i.equals(rslt.getString("Fenkelbranch"))){%>
<a name="<%=rslt.getString("Fenkelbranch")%>"></a>
<img src="pilned.gif"><a style="text-decoration: none; background-color: #DBDBDB" href="resultat.jsp"><%=rslt.getString("Fenkelbranch")%></a>
<%} else {%>
<img src="pil2.gif"><a href="resultat.jsp?i=<%=rslt.getString("Fenkelbranch")%>" target="hoger"><%=rslt.getString("Fenkelbranch")%></a>
<%}
} catch (NullPointerException e) {}%>
				
</td>
<td></td>
</tr>

		
<%try{
if(request.getParameter("i").equals(rslt.getString("Fenkelbranch"))){
Connection visaConn2 = DriverManager.getConnection("jdbc:mysql:///steget?user=steget&password=ujujuj");
Statement visaStmt2 = visaConn2.createStatement();
String visaQr2 = "SELECT sni92.Fenkelbranch, sni92.Kod, fo.PEORGNR, fo.REDNAMN, ae.BEN, ae.BEGAD, ae.UADR FROM sni92 INNER JOIN (ae INNER JOIN fo ON ae.PEORGNR = fo.PEORGNR) ON sni92.Kod = ae.NG1 WHERE (((sni92.Fenkelbranch) Like '"+request.getParameter("i")+"'));";
ResultSet rslt2 = visaStmt2.executeQuery(visaQr2);%>
					
<tr>
<td>
<table bgcolor="#eeeeee" cellpadding="2" cellspacing="0">
<%while(rslt2.next()){%>
<tr>
<td width="35" bgcolor="#ffffff"></td>
<td style="cursor:pointer; cursor:hand" onclick="javascript:selectItem(this,'<%=rslt2.getString("PEORGNR")%>')"><%if(rslt2.getString("BEN")!=null){%><font size="1" color="green"><%=rslt2.getString("BEN")%></font><%}else{%><font size="1" color="green"><%=rslt2.getString("REDNAMN")%></font><%}%></td>
<td><%if(rslt2.getString("BEGAD")!=null){%><font size="1" color="green"><%=rslt2.getString("BEGAD")%></font><%}else{%><font size="1" color="green"><%=rslt2.getString("UADR")%></font><%}%></td>
</tr>
<%}%>
</table>
</td>
</tr>
<%rslt2.close();
visaStmt2.close();
visaConn2.close();
}
} catch (NullPointerException e) {}%>

<%}%>				
</table>
<%rslt.close();
visaStmt.close();
visaConn.close();%>
<%}%>
	
  
  
  

<form method="get" action="carshow.asp" name="adv">
<table border="0" cellpadding="3" cellspacing="0" width="591">
<tr>
<td colspan="2">
<b>Sökning:</b>
<br>
<input type="text" name="vSearchText" size="40" style="width: 405px;" />
</td>
</tr>
</table>
</form>

</body>
</html>

Tyvärr funkar det inte

ViktorMedlem sedan aug. 20021 710 inlägg
#4
if(request.getParameter("i")==null){
String i = "Knutsson";
} else {
String i = request.getParameter("i");
}

String i finns bara deklarerad innom blocket else, dvs så fort som du lämnar detta block så finns inte i längre. Skriv såhär istället

String i=null;
if(request.getParameter("i")==null){
i = "Knutsson";
} else {
i = request.getParameter("i");
}

då finns i deklarerad i hela programmet.

/Viktor

tossesMedlem sedan aug. 2003190 inlägg
#5

Tack så mycket!!
jag är i inlärningsfasen och behöver mycket stöd och hjälp!

tossesMedlem sedan aug. 2003190 inlägg
#6

Olika sätt?!

Finns det något "rätt" sätt att programmera en databasfråga i en annan databasfråga.
Så som jag gjort i exemplet ovan..

val1
val2
val3
val4 osv...

När jag klickar på val2 t.ex. så ska listan se ut som följer:

val1
val2
undermeny till val2
under2 till val2......
val3
val4

ja,jag hoppas ni fattar?!

tossesMedlem sedan aug. 2003190 inlägg
#7

Mera ifsats

Jag fattar inte detta med ifsats i jsp! Så här har jag skrivit:

int a;
for(a=5;a<=numberOfColumns;a++){

//------------
//try{
if(request.getParameter("rubrik").equals(rsmd.getColumnName(a))){
out.print("<img src='pilned.gif'>");
out.println("<a href='resultat.jsp?rubrik="+rsmd.getColumnName(a)+"'>"+rsmd.getColumnName(a)+"</a><br>");

} else {
out.println("<a href='resultat.jsp?rubrik="+rsmd.getColumnName(a)+"'>"+rsmd.getColumnName(a)+"</a><br>");
out.print("adas");

}
//}catch (NullPointerException e) {}
//------------

}//forsats

Om getParameter rubrik equals kolumnnamnet så ska pilned.gif + lite till visas

annars så ska bl.a. adas visas

.. inget visas ..

HJÄLP !!

JaarMedlem sedan juli 2001434 inlägg
#8

Hmm, frågan är om det inte kastas ett undantag, fast med tanke på att du bortkommenterat catchen så har du nog kollat det...
Hmm, men testa med att vända på steken...

if(rsmd.getColumnName(a).equals(request.getParameter("rubrik"))  )

Eftersom du vet att rsmd.getColumnName inte är null iaf (troligen?) så vet du att det inte är ett nullpointer iaf...

Visas något annat på sidan? är det bara det stycket som försvinner?

Testa med en out.println("Test<br>") innan och efter for-blocket... Kanske en i.
kolla också så att numberOfColumns verkligen är större än 5 (for-loopen stegar ju från 5 upp till noOfColumns)

459 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
119 ms — hämta statistik (db)
133 ms — hämta tråd, inlägg och bilagor (db)
134 ms — hämta forumlista (db)