Avatar billede mik28 Seniormester
14. november 2007 - 11:13 Der er 8 kommentarer og
1 løsning

AJAX og JSP

Skriver man ikke bare

response.write("etellerandet"); i jsp filen

og

document.myForm.time.value=xmlHttp.responseText;

i html filen
Avatar billede arne_v Ekspert
14. november 2007 - 15:48 #1
Det kan man godt.

Men der findes specielle taglibs, saa man ikke behoever skrive en eneste linie JavaScript selv !
Avatar billede arne_v Ekspert
14. november 2007 - 15:52 #2
Der er tonsvis af Ajax taglibs til JSF. Og nogen til ren JSP.

Jeg lavede engang et lille eksempel med AjaxTags taglib'et.

Jeg kan godt finde det frem hvis E's soege funktion svigter.
Avatar billede mik28 Seniormester
15. november 2007 - 06:15 #3
Jeg kan ikke få det til at virke :-(

det ville være rigtigt fedt med nogle taflibs
Avatar billede mik28 Seniormester
15. november 2007 - 08:39 #4
burde det i øvrigt ikke være out.print i jsp filen?
Avatar billede arne_v Ekspert
16. november 2007 - 04:28 #5
jo
Avatar billede arne_v Ekspert
16. november 2007 - 04:29 #6
Avatar billede arne_v Ekspert
16. november 2007 - 04:30 #7
Avatar billede arne_v Ekspert
16. november 2007 - 04:45 #8
test.jsp
========

<%@ taglib uri="http://ajaxtags.org/tags/ajax" prefix="ajax" %>
<script type="text/javascript" src="prototype-1.4.0.js"></script>
<script type="text/javascript" src="controls.js"></script>
<script type="text/javascript" src="scriptaculous.js"></script>
<script type="text/javascript" src="overlibmws.js"></script>
<script type="text/javascript" src="ajaxtags.js"></script>
<link type="text/css" rel="stylesheet" href="ajaxtags.css"/>
<!-- demo #1 -->
<a href="test.jsp">Update time with blink</a>
<br/>
<ajax:anchors target="singletimediv">
<a href="time.jsp">Update time without blink</a>
</ajax:anchors>
<div id="singletimediv"><jsp:include page="time.jsp"/></div>
<hr/>
<!-- demo #2 -->
<ajax:area id="multitimediv" ajaxAnchors="true" >
<jsp:include page="time.jsp"/>
<br/>
<jsp:include page="time.jsp"/>
<br/>
<jsp:include page="time.jsp"/>
<br/>
<a href="test.jsp">Refresh</a>
</ajax:area>
<hr/>
<!-- demo #3 -->
<form>
Make:
<select id="make3">
    <option value="">Select make</option>
    <option value="Ford">Ford</option>
    <option value="VW">VW</option>
</select>
Model:
<select id="model3" disabled="disabled">
    <option value="">Select model</option>
</select>
</form>
<ajax:select baseUrl="GetModelXml" source="make3" target="model3" parameters="make={make3}"/>
<hr/>
<!-- demo #4 -->
<select id="make4">
    <option value="">Select make</option>
    <option value="Ford">Ford</option>
    <option value="VW">VW</option>
</select>
<div id="modeldiv"></div>
<ajax:htmlContent baseUrl="GetModelHtml" parameters="make={make4}" source="make4" target="modeldiv"/>
<hr/>
<!-- demo #5 -->
<ajax:tabPanel panelStyleId="tabPanel" contentStyleId="tabContent" panelStyleClass="tabPanel" contentStyleClass="tabContent" currentStyleClass="ajaxCurrentTab">
    <ajax:tab caption="Ford" baseUrl="GetModelHtml" parameters="make=Ford" defaultTab="true"/>
    <ajax:tab caption="VW" baseUrl="GetModelHtml" parameters="make=VW"/>
</ajax:tabPanel>
<hr/>
<!-- demo #6 -->
<form>
Celsius: <input type="text" id="c"/><input type="button" id="c2f" value="Convert to fahrenheit"/>
<br/>
Fahrenheit: <input type="text" id="f"/><input type="button" id="f2c" value="Convert to celsius"/>
</form>
<ajax:updateField baseUrl="ConvertTemperature" source="c" target="f" action="c2f" parameters="c={c}" parser="new ResponseXmlParser()"/>
<ajax:updateField baseUrl="ConvertTemperature" source="f" target="c" action="f2c" parameters="f={f}" parser="new ResponseXmlParser()"/>
<hr/>
<!-- demo #7 -->
<form class="basicForm">
Model: <input type="text" id="model"/>
</form>
<ajax:autocomplete source="model" target="" baseUrl="GetModelNamesXml" parameters="model={model}"
                  className="autocomplete" minimumCharacters="1" parser="new ResponseXmlToHtmlListParser()"/>
<hr/>

show.jsp
========

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table border>
<tr>
<th>Make</th>
<th>Model</th>
</tr>
<c:forEach var="mm" items="${allmodels}">
<tr>
<td><c:out value="${mm.make}"/></td>
<td><c:out value="${mm.model}"/></td>
<tr>
</c:forEach>
</table>

time.jsp
========

<%@ page import="java.util.*" %>
<%=new Date()%>

Car.java
========

package test;

public class Car {
    private String make;
    private String model;
    public Car() {
        this("", "");
    }
    public Car(String make, String model) {
        this.make = make;
        this.model = model;
    }
    public String getMake() {
        return make;
    }
    public void setMake(String make) {
        this.make = make;
    }
    public String getModel() {
        return model;
    }
    public void setModel(String model) {
        this.model = model;
    }
    public String toString() {
        return (make + " " + model);
    }
}

GetModelXml.java
================

package test;

import java.util.*;

import javax.servlet.http.*;

import org.ajaxtags.helpers.*;
import org.ajaxtags.servlets.*;

public class GetModelXml extends BaseAjaxServlet {
    public String getXmlContent(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String make = request.getParameter("make");
        List lst = new ArrayList();
        if(make.equals("Ford")) {
            lst.add(new Car("Ford", "Fiesta"));
            lst.add(new Car("Ford", "Focus"));
            lst.add(new Car("Ford", "Mondeo"));
        } else if(make.equals("VW")) {
            lst.add(new Car("VW", "Polo"));
            lst.add(new Car("VW", "Golf"));
            lst.add(new Car("VW", "Passat"));
        }
        AjaxXmlBuilder bld = new AjaxXmlBuilder();
        bld.addItems(lst, "model", "make");
        return bld.toString();
    }
}

GetModelHtml.java
=================

package test;

import java.io.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class GetModelHtml extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String make = request.getParameter("make");
        List lst = new ArrayList();
        if(make.equals("Ford")) {
            lst.add(new Car("Ford", "Fiesta"));
            lst.add(new Car("Ford", "Focus"));
            lst.add(new Car("Ford", "Mondeo"));
        } else if(make.equals("VW")) {
            lst.add(new Car("VW", "Polo"));
            lst.add(new Car("VW", "Golf"));
            lst.add(new Car("VW", "Passat"));
        }
        request.setAttribute("allmodels", lst);
        getServletConfig().getServletContext().getRequestDispatcher("/show.jsp").forward(request, response);
    }
}

GetModelNamesXml.java
==================

package test;

import java.util.*;

import javax.servlet.http.*;

import org.ajaxtags.helpers.*;
import org.ajaxtags.servlets.*;

public class GetModelNamesXml extends BaseAjaxServlet {
    public String getXmlContent(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String model = request.getParameter("model");
        List lst = new ArrayList();
        if("Fiesta".startsWith(model)) lst.add(new Car("Ford", "Fiesta"));
        if("Focus".startsWith(model)) lst.add(new Car("Ford", "Focus"));
        if("Mondeo".startsWith(model)) lst.add(new Car("Ford", "Mondeo"));
        if("Golf".startsWith(model)) lst.add(new Car("VW", "Golf"));
        if("Passat".startsWith(model)) lst.add(new Car("VW", "Passat"));
        if("Polo".startsWith(model)) lst.add(new Car("VW", "Polo"));
        AjaxXmlBuilder bld = new AjaxXmlBuilder();
        bld.addItems(lst, "model", "make");
        return bld.toString();
    }
}

ConvertTemperature.java
=======================

package test;

import java.util.*;

import javax.servlet.http.*;

import org.ajaxtags.helpers.*;
import org.ajaxtags.servlets.*;

public class ConvertTemperature extends BaseAjaxServlet {
    public String getXmlContent(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String c = request.getParameter("c");
        String f = request.getParameter("f");
        AjaxXmlBuilder bld = new AjaxXmlBuilder();
        if((c!=null && !c.equals("")) && (f==null || f.equals(""))) {
            bld.addItem("f", Integer.toString(Integer.parseInt(c)*9/5+32));
        } else if((c==null || c.equals("")) && (f!=null && !f.equals(""))) {
            bld.addItem("c", Integer.toString((Integer.parseInt(f)-32)*5/9));
        }
        return bld.toString();
    }
}
Avatar billede arne_v Ekspert
27. januar 2008 - 05:51 #9
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester