我正在使用一个用户Spring MVC和Hibernate的Web应用程序,
我是字段,类型是Clob,值是XML, 我成功地解析了这个并使用SAXParser方法读取/打印元素,
我想在JSP中向表中显示该元素(值),
但是我陷入困境,我甚至无法重复使用该元素,
这是我的代码,
@RequestMapping(value="/admin/Detail-BPJS-TK.html")
public ModelAndView listDetailBPJSTK(ModelMap model, HttpServletRequest request, HttpServletResponse response)throws ParserConfigurationException, SAXException, Exception{
if(!((request.getParameter("MESSAGEID")) == null)){
String MESSAGEID = request.getParameter("MESSAGEID");
System.out.println(MESSAGEID);
//140721438362
//DetailBPJS detailbpjs = detailbpjsService.get(MESSAGEID);
//String tes = detailbpjs.getMESSAGEID();
//System.out.println(tes);
Configuration cfg = new Configuration();
cfg.configure("hibernatesoaappbpjstk.cfg.xml");
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
String pay = "PAYMENT";
String sub = "PROCESSED";
Query query = session.createQuery("from DetailBPJS where TRANSACTION = :tra and SUBTRANSACTION = :sub and MESSAGEID = :mes");
query.setParameter("tra", pay);
query.setParameter("sub", sub);
query.setParameter("mes", MESSAGEID);
@SuppressWarnings("unchecked")
List <DetailBPJS> result = query.list();
if(result.isEmpty()){
System.out.println("Please, check the 'No. Billing' again!!");
System.out.println(MESSAGEID);
model.addAttribute("errorMessageBPJSTK", "true");
}else{
DetailBPJS data = (DetailBPJS)result.get(0);
String nom1 = data.getTRANSACTION();
String nom2 = data.getSUBTRANSACTION();
String nom3 = data.getUUID();
Clob nom4 = data.getRAWDATA();
System.out.println(nom1 + " - " + nom2 + " - " + nom3 + " - " + nom4);
//140721438362
//convert clob to java.io.reader
Reader myclob = nom4.getCharacterStream();
System.out.println(myclob);
//create InputSource from Reader
InputSource myinput = new InputSource(myclob);
System.out.println(myinput);
try {
SAXParserFactory factoryz = SAXParserFactory.newInstance();
SAXParser saxParser = factoryz.newSAXParser();
System.out.println(saxParser);
DefaultHandler handler = new DefaultHandler(){
boolean b_num = false;
boolean b_krb = false;
boolean b_reqid = false;
boolean b_ch = false;
boolean b_kb = false;
boolean b_tgl = false;
boolean tot = false;
boolean jht = false;
boolean jkk = false;
boolean jkm = false;
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException{
if (qName.equalsIgnoreCase("messageId")){
b_num = true;
}
if (qName.equalsIgnoreCase("bpjs:kodeRefBank")){
b_krb = true;
}
if (qName.equalsIgnoreCase("bpjs:reqId")){
b_reqid = true;
}
if (qName.equalsIgnoreCase("bpjs:chId")){
b_ch = true;
}
if (qName.equalsIgnoreCase("bpjs:kodeBank")){
b_kb = true;
}
if (qName.equalsIgnoreCase("bpjs:tglTrx")){
b_tgl = true;
}
if (qName.equalsIgnoreCase("totalAmount")){
tot = true;
}
if (qName.equalsIgnoreCase("amountJHT")){
jht = true;
}
if (qName.equalsIgnoreCase("amountJKK")){
jkk = true;
}
if (qName.equalsIgnoreCase("amountJKM")){
jkm = true;
}
}
public void characters(char ch[], int start, int length) throws SAXException{
if (b_num){
System.out.println("(1) Value of Billing Number : " + new String(ch, start, length));
String tust = new String(ch, start, length);
System.out.println(tust);
b_num = false;
}
if (b_krb){
System.out.println("(2) Value Of KodeRefBank : " + new String(ch, start, length));
b_krb = false;
}
if (b_reqid){
System.out.println("(3) Value Of ReqId : " + new String(ch, start, length));
b_reqid = false;
}
if (b_ch){
System.out.println("(4) Value Of ChId : " + new String(ch, start, length));
b_ch = false;
}
if (b_kb){
System.out.println("(5) Value Of KodeBank : " + new String(ch, start, length));
b_kb = false;
}
if (b_tgl){
System.out.println("(6) Value Of TglTrx : " + new String(ch, start, length));
b_tgl = false;
}
if (tot){
System.out.println("(7) Value Of Tot : " + new String(ch, start, length));
tot = false;
}
if (jht){
System.out.println("(8) Value Of JHT : " + new String(ch, start, length));
jht = false;
}
if (jkk){
System.out.println("(9) Value Of JKK : " + new String(ch, start, length));
jkk = false;
}
if (jkm){
System.out.println("(10) Value Of JKM : " + new String(ch, start, length));
jkm = false;
}
}
};
saxParser.parse(myinput, handler);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
//SAX Parser to parse this xml
}
session.close();
factory.close();
}else{
System.out.println("Please, check the 'No. Billing' again!!");
String MESSAGEID = request.getParameter("MESSAGEID");
System.out.println(MESSAGEID);
model.addAttribute("errorMessageBPJSTK", "true");
}
return listDetailBPJS(model);
}
任何帮助都会很愉快:)