有这样一个需求,比如说用一定格式输入一个楼层的数据,动态要求生成一个楼层分布图的html页面;点击该页面楼层中的某一个房间,可以进入到显示该房间的具体信息,也根据房间数据用图形显示,图形可以比较抽象。
感觉很复杂,不知道xslt能不能实现;另外有人提到一种技术,Ajax开源框架taconite可以做到,但两种都不是太熟悉,不知道能不能给点提示或思路

解决方案 »

  1.   

    vml或者svg可以实现动态图形及事件抓捕map可以实现静态图形(服务器端动态生成)事件抓捕。xslt和ajax与你的要求无关。不要什么流行就用什么。主要得看你要干什么。
      

  2.   

    package utils;import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
    import java.sql.*;
    import java.io.*;
    //import org.apache.soap.util.mime.*;  //for ByteArrayDataSource
    import javax.activation.DataSource;   //for ByteArrayDataSourcepublic class JavaSMTPMail {
      private String host ;
      private String from ;
      private String to ;
      private String subject;
      private String  body  ;
      private String fileAttachment ;  public void send() throws Exception {    host = "purfax";  //(String) p.get("MAIL_SERVER");
        host = "wuyg";  //(String) p.get("MAIL_SERVER");
        from = "purfaxbox@purfax";//(String) p.get("MAIL_USER")+"@"+host;
        System.out.print(from);
    //    to = (String) items.get("to");
        to ="[email protected]";    subject = "test fax中文 --2";  // (String) items.get("subject");
    //    subject = "[email protected] | 363826 | 1";
        body = "test fax from wuyg"; // (String) items.get("body");
    //    fileAttachment = "D:/Fax_Log/domino.log.txt"; //a_attachFile;
        fileAttachment = "d:/testQInput.htm"; //a_attachFile;    // Get system properties
        Properties props = System.getProperties();    // Setup mail server
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", "false");    // Get session
        Session session =
            Session.getInstance(props, null);    // Define message
        MimeMessage message =  new MimeMessage(session);
        message.setFrom( new InternetAddress(from));
        message.addRecipient(  Message.RecipientType.TO,  new InternetAddress(to));
        message.setSubject(subject);
        // 建议改成下面的语句
        // sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
        // message.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");    // create the message part
        MimeBodyPart messageBodyPart = new MimeBodyPart();
        Multipart multipart = new MimeMultipart();    // 插入正文
        if (body !="") {
          messageBodyPart.setHeader("Content-Type","text/plain; charset=gb2312");
          messageBodyPart.setText(body);
          multipart.addBodyPart(messageBodyPart);
        }    // 插入附件
        if (fileAttachment != ""){
          messageBodyPart = new MimeBodyPart();
          DataSource source =  new FileDataSource(fileAttachment);
    //      messageBodyPart.setDataHandler( new DataHandler(source));
    //      messageBodyPart.setFileName(fileAttachment);
          //建议改用下面的方法
          String SSS="--wuyg abcd--123445667788 asdfad asdadasd --中文--";      ByteArrayOutputStream byteStream=new ByteArrayOutputStream();
          ObjectOutputStream objectStream=new ObjectOutputStream(byteStream);
          objectStream.writeObject(SSS); //theObject);
    //      messageBodyPart.setDataHandler(new DataHandler(new ByteArrayDataSource(byteStream.toByteArray(), "lotontech/javaobject")));
    //
    //      messageBodyPart.setHeader("Content-Type","application/octet-stream; name=a.txt");
    //      messageBodyPart.setHeader("Content-Disposition",  "attachment;filename=a.txt");
    //            messageBodyPart.setHeader("Content-transfer-encoding", "base64");
    //      messageBodyPart.setHeader("Content-Type","text/csv");
    //      DataSource source =  new ByteArrayOutputStream(SSS);
    //      messageBodyPart.setDataHandler(new DataHandler(source));
         InternetHeaders cc =  new InternetHeaders();
         cc.setHeader("Content-Type","application/octet-stream; name=a.txt");
         cc.setHeader("Content-Disposition",  "attachment;filename=a.txt");
    //     cc.setHeader("Content-transfer-encoding", "base64");
         MimeBodyPart vv =new MimeBodyPart(cc,byteStream.toByteArray());
         MimePartDataSource bb=new MimePartDataSource(vv);
         messageBodyPart.setDataHandler(new DataHandler(bb));
    //      messageBodyPart.setDataHandler(new DataHandler(SSS, "lotontech/javaobject"));
    //      messageBodyPart.setDataHandler(new DataHandler(SSS.toCharArray(), "Content-type:text/csv"));
    //       messageBodyPart.setDataHandler(new DataHandler(new ByteArrayDataSource(SSS), "Content-type:text/csv"));
    //        messageBodyPart.setFileName(fileAttachment);
          multipart.addBodyPart(messageBodyPart);
        }    //Put parts in message
        message.setContent(multipart);    // Send the message
        System.out.println();
        System.out.println("发送到:"+ to );
        Transport.send( message );
      }
    }
      

  3.   

    能不能结合GIS ?
    学习中~
      

  4.   

    里面有一个问题:点击该页面楼层中的某一个房间,可以进入到显示该房间的具体信息,有一个onclick事件,打开一个新的页面,不知道会不会有什么问题
      

  5.   

    svg,或vml是最理想的选择。。vml是MS的技术。IE才支持。SVG是比较通用的。IE7开始完全支持SVG····所以建议用SVG来生成。
      

  6.   

    我也覺得用vml比較方便,
    我以前做的圖形工作流的需求跟你這個差不多。