Selenium webdriver - unable to locate an element on youtube - java

I am trying to retrieve the search results from YouTube suggestions using Selenium webdriver (Java) but i am getting the following error. Please help.
Error:
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Unable to locate element: {"method":"class name","selector":"gssb_e"}
Build info: version: '2.41.0', revision: '3192d8a', time: '2014-03-27 17:18:15'
System info: host: 'localhost', ip: '127.0.0.1', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.3', java.version: '1.7.0_55'
Driver info: driver.version: unknown
Code
package test3;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class YoutubeSuggest {
public static void main(String[] args) {
// The Firefox driver supports javascript
WebDriver driver = new FirefoxDriver();
// Go to the youtube home page
driver.get("http://www.youtube.com/");
// Enter the query string "Ozzy "
WebElement query = driver.findElement(By.name("search_query"));
query.sendKeys("Ozzy ");
// Sleep until the div we want is visible or 10 seconds is over
long end = System.currentTimeMillis() + 10000;
while (System.currentTimeMillis() < end) {
WebElement resultsDiv = driver.findElement(By.className("gssb_e"));
// If results have been returned, the results are displayed in a drop down.
if (resultsDiv.isDisplayed()) {
break;
}
}
// And now list the suggestions
List<WebElement> allSuggestions = driver.findElements(By.xpath("//td[#class='gsq_a']"));
for (WebElement suggestion : allSuggestions) {
System.out.println(suggestion.getText());
}
//driver.quit();
}
}
HTML generated by youtube suggestions:
<table dir="ltr" class="gstl_50 gssb_c"
style="width: 585px; top: 39px; position: fixed; text-align: left; left: 230px; display: none;"
cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="gssb_f"></td>
<td style="width: 100%;" class="gssb_e"><table class="gssb_m"
style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne crazy train</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne no more tears</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne mama i'm coming home</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne paranoid</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne justin bieber</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne mr crowley</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne bark at the moon</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne interview</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne dreamer</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
</tbody>
</table></td>
</tr>
</tbody>
</table>

Try with below logic to get the youtube search results after loading URL .
driver.findElement(By.name("search_query")).sendKeys("Selenium WebDriver"+Keys.ENTER);
List<WebElement> search_result=driver.findElements(By.cssSelector("#results ol#search-results>li h3>a"));
for(WebElement each_result:search_result) {
System.out.println(each_result.getAttribute("title"));
}

it seems that since the time of writing the tutorial google has changed the element class names. The changes below worked for me.
WebElement resultsDiv = driver.findElement(By.className("sbsb_a"));
List allSuggestions = driver.findElements(By.xpath("//li[#class='sbsb_c gsfs']"));

Related

Getting text between html tags

So basically I have this html and what I want is the text under the tag that has the name:, for example I want this cb6a296b-c7ba-4228-b9f2-d6e39947814e, I've tried using soup but for some reason I always obtain a full html instead of the tags themselves. Is there any way of getting this name cb6a296b-c7ba-4228-b9f2-d6e39947814e?
html:
<td>
<div>
<h3>Id:</h3>
<table style="border: none">
<tbody>
<tr>
<td style="border: none"><b>id:</b></td>
<td style="border: none"><span style="margin-left: 15px">testuuid1</span></td>
</tr>
<tr>
<td style="border: none"><b>idtype:</b></td>
<td style="border: none"><span style="margin-left: 15px">uuid</span></td>
</tr>
<tr>
<td style="border: none"><b>territory:</b></td>
<td style="border: none"><span style="margin-left: 15px">GB</span></td>
</tr>
<tr>
<td style="border: none"><b>type:</b></td>
<td style="border: none"><span style="margin-left: 15px">cover</span></td>
</tr>
<tr>
<td style="border: none"><b>version:</b></td>
<td style="border: none"><span style="margin-left: 15px">aa3601f8-219a-43e6-be36-0aa49d2f0943</span></td>
</tr>
</tbody>
</table>
</div>
<div>
<h3>File:</h3>
<table style="border: none">
<tbody>
<tr>
<td style="border: none"><b>extension:</b></td>
<td style="border: none"><span style="margin-left: 15px">jpg</span></td>
</tr>
<tr>
<td style="border: none"><b>md5Checksum:</b></td>
<td style="border: none"><span style="margin-left: 15px">f5e1725f067a697805f4af28bef55720</span></td>
</tr>
<tr>
<td style="border: none"><b>mimeType:</b></td>
<td style="border: none"><span style="margin-left: 15px">image/jpeg</span></td>
</tr>
<tr>
<td style="border: none"><b>name:</b></td>
<td style="border: none"><span style="margin-left: 15px">cb6a296b-c7ba-4228-b9f2-d6e39947814e</span></td>
</tr>
<tr>
<td style="border: none"><b>path:</b></td>
<td style="border: none"><span style="margin-left: 15px"></span></td>
</tr>
</tbody>
</table>
</div>
<div>
<h3>FileInfo:</h3>
<table style="border: none">
<tbody>
<tr>
<td style="border: none"><b>created:</b></td>
<td style="border: none"><span style="margin-left: 15px">2022-08-09T17:05:12Z</span></td>
</tr>
<tr>
<td style="border: none"><b>createdBy:</b></td>
<td style="border: none"><span style="margin-left: 15px">admin</span></td>
</tr>
<tr>
<td style="border: none"><b>expires:</b></td>
<td style="border: none"><span style="margin-left: 15px">2032-06-26T23:30:00Z</span></td>
</tr>
<tr>
<td style="border: none"><b>updated:</b></td>
<td style="border: none"><span style="margin-left: 15px">2022-08-09T17:05:14Z</span></td>
</tr>
<tr>
<td style="border: none"><b>updatedBy:</b></td>
<td style="border: none"><span style="margin-left: 15px">admin</span></td>
</tr>
</tbody>
</table>
</div></td>
Program:
val document: Document = Jsoup.parse(requestBody[0])
val element = document.select("td:contains(name:)").get(0)
You can just give your <span> element an id:
...
<tr>
<td style="border: none"><b>name:</b></td>
<td style="border: none"><span id="file-name" style="margin-left: 15px">cb6a296b-c7ba-4228-b9f2-d6e39947814e</span></td>
</tr>
...
And then you can easily access the value of the field in javascript:
<script>
let fileName = document.getElementById('file-name').innerHTML
...
</script>

how to send html email in android?

Hi I am making an app in which I am sending an email to a specific address
This email is a html email with table and images and all...
Is I have tried to add Html.fromhtml() but it keeps saying type mismatch
needed string found spanned....
If you need any of my code please comment
Please suggest any tutorial if you have in mind
EDIT
I forgot to mention I am sending mail using javax.maillibrary I am not using Intents
I tried to use Html.tohtml(Spanned text) its giving the message of type mismatch cant convert String to spannedtext
I have no idea whats happening
I am receiving the html data in my mail if i just go with it
UPDATE
I am fetching the content from a string resource
and this is what I am getting as result
$message = ' For Support enquiry#makeintern.comContact Form Enquiry !
Name: :'.$name.'Email: :'.$email.'Contact: :'.$mobile.'Message:
:'.$message.'Date-Time: :'.$current_date.'
Thanks and Regards MakeIntern Team Account Manager - MakeIntern Cell
www.makeintern.com enquiry#makeintern.com
If any query Please call us on : 011-45544188  www.makeintern.com |
enquiry#makeintern.com 
from---
<string name="email">$message = \'<center>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="center" bgcolor="#FFFFFF">
<table width="620px" cellpadding="0" cellspacing="0">
<tr>
<td width="400px" bgcolor="#000000" style="color:#FFFFFF; text-
decoration:none; float:left;font-size:10px;margin: -18px 3px -1px 11px; font-weight:bold; padding:2px; text-decoration:none; padding-left:0px;">For Support <span style="text-decoration:none; color:#FFFFFF;">enquiry#makeintern.com</span></td>
<td width="220px" bgcolor="#000000"></td>
</tr>
<tr style="background-color:#737373;">
<td width="290" align="left" valign="middle"><a href="http://makeintern.com" target="_blank"><img src="http://www.makeintern.com/images/makeintern.jpg" width="136" border="0" alt="MakeIntern" style="display:block; padding-left:0px;"></a></td>
<td width="290" align="right" style="text-align:right; font-family:Arial, Segoe UI,Helvetica Neue, Helvetica, sans-serif; font-size:18px; line-height:18px; color:#FFFFFF; font-weight:normal; padding-right:10px;">Contact Form Enquiry !<br>
</td>
</tr>
<tr>
<td height="12px" colspan="2"></td>
</tr>
<tr>
<td colspan="2" align="center" style="line-height:16px; font-family:arial; font-size:12px; color:#888888; text-align:left;">
<table cellspacing="0" cellpadding="0">
<tr>
<td width="200px" style="font-weight:bold;">Name: </td>
<td width="100px">:</td>
<td>\'.$name.\'</td>
</tr>
<tr>
<td width="200px" style="font-weight:bold;">Email: </td>
<td width="100px">:</td>
<td>\'.$email.\'</td>
</tr>
<tr>
<td width="200px" style="font-weight:bold;">Contact: </td>
<td width="100px">:</td>
<td>\'.$mobile.\'</td>
</tr>
<tr>
<td width="200px" style="font-weight:bold;">Message: </td>
<td width="100px">:</td>
<td>\'.$message.\'</td>
</tr>
<tr>
<td width="200px" style="font-weight:bold;">Date-Time: </td>
<td width="100px">:</td>
<td>\'.$current_date.\'</td>
</tr>
</table>
<br/><br/>
Thanks and Regards <br/>
MakeIntern Team <br/>
Account Manager - MakeIntern Cell <br/>
www.makeintern.com<br/>
enquiry#makeintern.com<br/><br/>
<b>If any query Please call us on : 011-45544188</b><br/>
</td>
</tr>
<tr>
<td height="12px"></td>
</tr>
<tr>
<td colspan="2"><img src="http://www.myhotbooking.com/images/email-template/bar.png"></td>
</tr>
<tr>
<td colspan="2" bgcolor="#737373" height="90px">
<table cellpadding="0" cellspacing="0" width="620px">
<tr>
<td height="10px"></td>
</tr>
<tr>
<td align="center" style="color:#FFFFFF;" height="20px"><a href="http://www.makeintern.com/">www.makeintern.com </a>| <span style="color:#FFFFFF; text-decoration:none;">enquiry#makeintern.com</span></td>
</tr>
<tr>
<td align="center" valign="middle">
<a href="https://www.facebook.com/makeinterns" target="_blank"><img src="http://www.myhotbooking.com/images/email-template/icon-facebook.png" width="26" height="26" border="0" alt="Facebook"></a><a href="https://twitter.com/makeintern" target="_blank"><img src="http://www.myhotbooking.com/images/email-template/icon-twitter.png" width="26" height="26" border="0" alt="Twitter"></a><a href="https://www.linkedin.com/company/makeintern" target="_blank"><img src="http://www.myhotbooking.com/images/email-template/icon-linkedin.png" width="26" height="26" border="0" alt="Linkedin"></a><a href="https://plus.google.com/+makeintern" target="_blank"><img src="http://www.myhotbooking.com/images/email-template/icon-google-plus.png" width="26" height="26" border="0" alt="Google+"></a></td>
</tr>
<tr>
<td align="center" style="color:#FFFFFF;"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>\'</string>
Thankyou in advance
Try Below Code :
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT,getResources().getString(R.string.email_subject));
sendIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(getResources().getString(R.string.email_text)));
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, ""));
string.xml
<resources>
<string name="email_subject">Download App for your smartphone.</string>
<string name="email_text"><![CDATA[Hey,<br/>I just downloaded App on my Android.<br/>It is a smartphone Manager.This app even lets me book parties,search restaurants.<br/>App is available for Android.<br/>
Get it now from http://www.exampleapp.com/download]]></string>
</resources>

BufferReader not able to read full file in java

Hello Friends I have following data in store in file.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<div id="divOldReceipt" style="width:100%">
<style>
.tableStyle{border-collapse: collapse;
width: 100%;
font-family: Times New Roman;
font-size: 17px;
border: 1px solid black;}
.tableStyle th td {border: 1px solid black;}
.tableStyle td {border: 1px solid black;padding-left:3px;}
</style>
<table cellspacing="0" cellpadding="0" style="width: 8in; font-family:Times New Roman;">
<tbody>
<tr>
<td style="width: 20%;text-align:center" rowspan="2">
<img style="height: 84px; width: 71px" src={%images_path%}></img>
</td>
<td style="width: 60%;text-align: center; font-size: 25px;">
<b>
CORPORATION OF CHENNAI
</b>
</td>
<td></td>
</tr>
<tr>
<td style="text-align: center; font-size: 18px">
<b>
PROPERTY TAX RECEIPT
</b>
</td>
<td></td>
</tr>
<tr>
<td colspan="3">
<table class="tableStyle" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="width: 20%"></td>
<td style="width: 20%"></td>
<td style="width: 10%"></td>
<td style="width: 10%"></td>
<td style="width: 40%"></td>
</tr>
<tr>
<td style="height: 25px;">
<b>
Receipt No:
</b>
</td>
<td colspan="2" style="height: 25px;">
<b>
{%receiptNo%}
</b>
</td>
<td colspan="2" style="text-align:center;height: 25px;">
<b>
Receipt Date: {%Receipt_date%}
</b>
</td>
</tr>
<tr>
<td style="height: 25px;">
<b>
Name:
</b>
</td>
<td style="height: 25px;" colspan="4">
{%persone_name%}
</td>
</tr>
<tr>
<td style="height: 25px;">
<b>
Address:
</b>
</td>
<td style="height: 25px;" colspan="4">
{%address%}
</td>
</tr>
<tr>
<td rowspan="2" style="height: 25px;">
<b>
Payment Details:
</b>
</td>
<td style="height: 25px;border-right-style:none;">
Description:
</td>
<td colspan="3" style="height: 25px;border-left-style:none;">
New Property Tax Number : {%new_property_tax_no%}
<br>
Old Property Tax Number : {%old_property_tax_no%}
</td>
</tr>
<tr>
<td style="height: 25px;border-right-style:none;">
Paid By:
</td>
<td colspan="3" style="height: 25px;border-left-style:none;">
{%paid_by%}
</td>
</tr>
<tr>
<td style="text-align:center;height: 25px;" colspan="3">
<b>
Description Head of A/C
</b>
</td>
<td style="text-align:center;height: 25px;" colspan="2">
<b>
Amount (in Rupees)
</b>
</td>
</tr>
<tr>
<td style="height: 25px;text-align: center;" colspan="3">
{%installment%}
</td>
<td style="text-align:center;padding-right:5px;height : 25px;" colspan="2">
{%adjistment%}
</td>
</tr>
<tr>
<td style="text-align:right;padding-right:5px;height: 25px;" colspan="3">
<b>
Total:
</b>
</td>
<td style="text-align:center;padding-right:5px;height : 25px;" colspan="2">
<b>
{%adjistment%}
</b>
</td>
</tr>
{%Bank Details%}
<tr>
<td colspan="5" style="height: 25px;">
This is computer generated receipt. Signature is not neccessary.Except Online payment the receipt is subject to realisation of cheque.
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
I Want to read this file in java using following code
public String readTemplateFile(String fileName) throws Exception
{
BufferedReader bufferedReader = new BufferedReader(new FileReader(fileName));
String line =null;
StringBuilder sb = new StringBuilder();
while((line = bufferedReader.readLine())!=null)
{
sb.append(line);
}
return sb.toString();
}
OR
public String readFile(String filepath) throws IOException {
File f = new File(filepath);
if (f.exists()) {
FileInputStream in = new FileInputStream(f);
int size = in.available();
byte c[] = new byte[size];
for (int i = 0; i < size; i++) {
c[i] = (byte) in.read();
}
String filedata = new String(c, "utf-8");
return filedata.toString().trim();
} else {
return null;
}
}
But Full file is not getting read
following is output
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head></head> <body> <div id="divOldReceipt" style="width:100%"> <style> .tableStyle{border-collapse: collapse; width: 100%; font-family: Times New Roman; font-size: 17px; border: 1px solid black;} .tableStyle th td {border: 1px solid black;} .tableStyle td {border: 1px solid black;padding-left:3px;} </style> <table cellspacing="0" cellpadding="0" style="width: 8in; font-family:Times New Roman;"> <tbody> <tr> <td style="width: 20%;text-align:center" rowspan="2"> <img style="height: 84px; width: 71px" src="../Images/Corporation.gif"></img> </td> <td style="width: 60%;text-align: center; font-size: 25px;"> <b> CORPORATION OF CHENNAI </b> </td> <td></td> </tr> <tr> <td style="text-align: center; font-size: 18px"> <b> PROPERTY TAX RECEIPT </b> </td> <td></td> </tr> <tr> <td colspan="3"> <table class="tableStyle" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="width: 20%"></td> <td style="width: 20%"></td> <td style="width: 10%"></td> <td style="width: 10%"></td> <td style="width: 40%"></td> </tr> <tr> <td style="height: 25px;"> <b> Receipt No: </b> </td> <td colspan="2" style="height: 25px;"> <b> {%receiptNo%} </b> </td> <td colspan="2" style="text-align:center;height: 25px;"> <b> Receipt Date: {%Receipt_date%} </b> </td> </tr> <tr> <td style="height: 25px;"> <b> Name: </b> </td> <td style="height: 25px;" colspan="4"> {%persone_name%} </td> </tr> <tr> <td style="height: 25px;">
I am confused why my code is behaving like this can some one plz help me to solve this issue.
Thanks In advance
Is the output you mention produced by the first or by the second code sample?
For your first code example, note that bufferedReader.readLine() returns the next line of the file but discard the end-of-line characters. These end-of-line characters are not added again by the sb.append(line) method call. This might explain why the end-of-lines are removed from your file.
For your second code examle, in.available() only returns an estimate of the number of bytes remaining in the stream, so don't use to determine the size of the input. It is better to read through the stream sequentially until the end-of-file has been reached. If the end-of-file is reached, in.read() will return -1.

The method println(boolean) in the type PrintStream is not applicable for the arguments (void)

I want to print resultset value retrive from SQL JSTL tags.but it gave error
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 219 in the jsp file: /testVoucher.jsp
The method println(boolean) in the type PrintStream is not applicable for the arguments (void)
216:
217:
218: <%
219: System.out.println(
220: %>
221:
222: <%
An error occurred at line: 220 in the jsp file: /testVoucher.jsp
Syntax error, insert ")" to complete Expression
217:
218: <%
219: System.out.println(
220: %>
221:
222: <%
223: );
An error occurred at line: 223 in the jsp file: /testVoucher.jsp
Syntax error on token ")", delete this token
220: %>
221:
222: <%
223: );
224: %>
225:
226:
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
The Main part of code is as follows
<sql:preparedStatement id="pst" conn="conn">
<sql:query>
SELECT A.BANK_NAME,B.SCHEME_NAME SCHEME_DESC,
TO_CHAR(SUM(B.GROSS),'99,99,99,99,990.00') GROSS,
round(SUM(B.TDS),0) TDS,
TO_CHAR(SUM(B.ADVANCE),'99,99,99,99,990.00') ADVANCE,
TO_CHAR(SUM(B.PARTIAL),'99,99,99,99,990.00') PARTIAL,
TO_CHAR(SUM(B.NET),'99,99,99,99,990.00') NET
FROM VW_VOUCHER_ALLOCATION_DETAIL B, VW_SCHEME_ACCOUNT A
WHERE B.VOUCHER_NO='<%=voucher%>'
AND B.ID = A.EXPENSE_SCH_CODE
AND (B.GROSS>0 OR B.ADVANCE>0 OR B.PARTIAL>0)
GROUP BY A.BANK_NAME,B.SCHEME_NAME
ORDER BY A.BANK_NAME, B.SCHEME_NAME
</sql:query>
<sql:resultSet id="rs">
<tr style="height:20px">
<td CLASS="BORDER_"><b><sql:getColumn colName="BANK_NAME"/></b></td>
<td CLASS="BORDER_" ><sql:getColumn colName="SCHEME_DESC"/></td>
<td CLASS="BORDER_" align="right"><sql:getColumn colName="GROSS"/></td>
<td CLASS="BORDER_" align="right"><sql:getColumn colName="TDS"/></td>
<td CLASS="BORDER_" align="right" bgcolor="#e2d36d"><sql:getColumn colName="ADVANCE"/></td>
<td CLASS="BORDER_" align="right" bgcolor="#e2d36d"><sql:getColumn colName="PARTIAL"/></td>
<td CLASS="BORDER_" align="right"><sql:getColumn colName="NET"/></td>
</tr>
/////it give error here ///////////////////////////
<%
System.out.println(
%>
<sql:getColumn colName="SCHEME_DESC"/>
<%
);
%>
</sql:resultSet>
Whole code is As follows:
<%# include file="/include_session_check.jsp" %>
<%# include file="/include_db_tld.jsp" %>
<%#page import="java.util.ArrayList"%>
<center>
<%!
ArrayList<String> BankName_list=new ArrayList<String>();
%>
<%
String voucher="2012-2013/001188";
//com.GEN_Utility.nvl(request.getParameter("voucher"));
ArrayList<String> Scheme_list=new ArrayList<String>();
ArrayList<Float> Gross_List=new ArrayList<Float>();
ArrayList<Float> TDS_List=new ArrayList<Float>();
ArrayList<Float> Adv_List=new ArrayList<Float>();
ArrayList<Float> Partial_List=new ArrayList<Float>();
ArrayList<Float> Net_List=new ArrayList<Float>();
System.out.println(" voucher "+voucher);
%>
<br>
<DIV CLASS="PGBREAK" STYLE="background-color: white; WIDTH: 800px;">
<table width="793" height="70">
<TR>
<TD width="55%">
<img src="<%=STRpath%>index/Logo_new.bmp">
</TD>
<TD width="45%"><br><b>Mirae Asset Global Investments(I) Pvt Ltd</b> <br>
Unit No. 606, 6th Floor, Windsor Bldg.,<br>
Off CST Road, Kalina, Santacruz(E),<br>
Mumbai - 400 098.<br>
www.miraeassetmf.co.in
</TD>
</TR>
</table>
<hr width="793" noshade="true">
<sql:preparedStatement id="pst" conn="conn">
<sql:query>
SELECT DISTINCT A.VOUCHER_NO,A.DT_CASHFLOW,
TO_CHAR(A.AMT_FINAL,'99,99,99,99,990.00') AMT_FINAL,A.TDS,
TO_CHAR(A.AMT_ADJUST,'99,99,99,99,990.00') AMT_ADJUST,
TO_CHAR(A.AMT_NET,'99,99,99,99,990.00') AMT_NET,
TO_CHAR(A.AMT_ADVANCE,'99,99,99,99,990.00') AMT_ADVANCE,
TO_CHAR(A.AMT_PARTIAL,'99,99,99,99,990.00') AMT_PARTIAL,
A.EXPENSE_DESC,A.EXPENSE_CHARGE,A.ALLOCATION_PERIOD,
DECODE(B.ALLOCATION_ID,'7','(Quarterly AUM)',
'8',(SELECT (TO_CHAR(A.FROM_DT,'Mon-YYYY')||' - '||TO_CHAR(A.TO_DT,'Mon-YYYY')) ALLOCDT FROM DATA_AVG_AUM A, DATA_TRAN_BILL B
WHERE A.TRAN_ID = B.TRAN_ID
AND B.VOUCHER_NO='<%=voucher%>')) QTRAUM
FROM VW_VOUCHER_DETAIL A, DATA_TRAN_BILL B , MAST_ALLOCATION C
WHERE A.VOUCHER_NO = B.VOUCHER_NO
AND B.ALLOCATION_ID = C.ID
AND A.VOUCHER_NO='<%=voucher%>'
</sql:query>
<sql:resultSet id="rs">
<b>Approval Memo</b><br><br>
<table width="793" border="0" cellspacing="0" cellpadding="0" style="border: 1px solid #6e6e6e;">
<tr>
<td colspan="4" valign="TOP" align="center">
<%--------------------------%>
<table width="98%" border="0" cellspacing="0" cellpadding="0" >
<tr bgcolor="#c5c5c5" style="height:20px">
<td width="10"> </td>
<td width="200" nowrap><b>Vocuher No.</b></td>
<td width="10">:</td>
<td width="0" colspan="5"><sql:getColumn colName="VOUCHER_NO"/></td>
</tr>
<tr>
<td> </td>
<td><b>Allocation Period</b></td>
<td>:</td>
<td><sql:getColumn colName="ALLOCATION_PERIOD"/> <sql:getColumn colName="QTRAUM"/></td>
<td> </td>
<td><b>Expense Type</b></td>
<td>:</td>
<td><sql:getColumn colName="EXPENSE_DESC"/></td>
</tr>
<tr>
<td> </td>
<td><b>Cash Flow Date</b></td>
<td>:</td>
<td><sql:getColumn colName="DT_CASHFLOW"/></td>
<td> </td>
<td><b>Expense Charge To</b></td>
<td>:</td>
<td><sql:getColumn colName="EXPENSE_CHARGE"/></td>
</tr>
<tr>
<td> </td>
<td><b>Gross Amount</b></td>
<td>:</td>
<td><sql:getColumn colName="AMT_FINAL"/></td>
</tr>
<tr>
<%-- <td> </td>
<td><b>Gross Amount</b></td>
<td>:</td>
<td><sql:getColumn colName="AMT_FINAL"/></td>
--%>
<td> </td>
<td><b>TDS (%)</b></td>
<td>:</td>
<td><sql:getColumn colName="TDS"/>%</td>
</tr>
<tr>
<td> </td>
<td><b>Adjusted Amount</b></td>
<td>:</td>
<td><sql:getColumn colName="AMT_ADJUST"/></td>
</tr>
<tr>
<td> </td>
<td><b>Advance/Partial</b></td>
<td>:</td>
<td><sql:getColumn colName="AMT_ADVANCE"/> / <sql:getColumn colName="AMT_PARTIAL"/></td>
<%-- <td> </td>
<td><b>Net Payable</b></td>
<td>:</td>
<td><sql:getColumn colName="AMT_NET"/></td> --%>
</tr>
<tr>
<td> </td>
<td><b>Net Payable</b></td>
<td>:</td>
<td><b><sql:getColumn colName="AMT_NET"/></b></td>
</tr>
<tr>
<td colspan="4"> </td>
</tr>
<tr>
<td> </td>
<td><b>Narration</b></td>
<td>:</td>
<td colspan="5">
<sql:preparedStatement id="pst" conn="conn">
<sql:query>
SELECT PAYMENT_REMARKS FROM DATA_TRAN_BILL
WHERE VOUCHER_NO='<%=voucher%>'
</sql:query>
<sql:resultSet id="rs">
<sql:getColumn colName="PAYMENT_REMARKS"/>
</sql:resultSet>
</sql:preparedStatement>
</td>
</tr>
<!-- <tr>
<td colspan="4"> </td>
</tr>-->
<tr>
<td> </td>
<td><b>Scheme Allocation</b></td>
<td>:</td>
<td> </td>
</tr>
</table>
<%--------------------------%>
</td>
</tr>
<sql:preparedStatement id="pst" conn="conn">
<sql:query>
SELECT A.BANK_NAME,B.SCHEME_NAME SCHEME_DESC,
TO_CHAR(SUM(B.GROSS),'99,99,99,99,990.00') GROSS,
round(SUM(B.TDS),0) TDS,
TO_CHAR(SUM(B.ADVANCE),'99,99,99,99,990.00') ADVANCE,
TO_CHAR(SUM(B.PARTIAL),'99,99,99,99,990.00') PARTIAL,
TO_CHAR(SUM(B.NET),'99,99,99,99,990.00') NET
FROM VW_VOUCHER_ALLOCATION_DETAIL B, VW_SCHEME_ACCOUNT A
WHERE B.VOUCHER_NO='<%=voucher%>'
AND B.ID = A.EXPENSE_SCH_CODE
AND (B.GROSS>0 OR B.ADVANCE>0 OR B.PARTIAL>0)
GROUP BY A.BANK_NAME,B.SCHEME_NAME
ORDER BY A.BANK_NAME, B.SCHEME_NAME
</sql:query>
<tr>
<td colspan="4" align="center">
<%--------------------------%>
<DIV STYLE="height: 510px;" ID="fix">
<table width="750" border="0" cellspacing="1" cellpadding="0" style="border: 1px solid #6e6e6e;">
<tr bgcolor="#c5c5c5" style="height:20px;">
<td CLASS="BORDER_" style="border-bottom: 1px solid #6e6e6e;"><B>Custody Name</B></td>
<td CLASS="BORDER_" style="border-bottom: 1px solid #6e6e6e;"><B>Scheme Name</B></td>
<td CLASS="BORDER_" style="border-bottom: 1px solid #6e6e6e;"><B>Gross</B></td>
<td CLASS="BORDER_" style="border-bottom: 1px solid #6e6e6e;"><B>TDS</B></td>
<td CLASS="BORDER_" style="border-bottom: 1px solid #6e6e6e;"><B>Advance</B></td>
<td CLASS="BORDER_" style="border-bottom: 1px solid #6e6e6e;"><B>Partial</B></td>
<td CLASS="BORDER_" style="border-bottom: 1px solid #6e6e6e;"><B>Net</B></td>
</tr>
<sql:resultSet id="rs">
<tr style="height:20px">
<td CLASS="BORDER_"><b><sql:getColumn colName="BANK_NAME"/></b></td>
<td CLASS="BORDER_" ><sql:getColumn colName="SCHEME_DESC"/></td>
<td CLASS="BORDER_" align="right"><sql:getColumn colName="GROSS"/></td>
<td CLASS="BORDER_" align="right"><sql:getColumn colName="TDS"/></td>
<td CLASS="BORDER_" align="right" bgcolor="#e2d36d"><sql:getColumn colName="ADVANCE"/></td>
<td CLASS="BORDER_" align="right" bgcolor="#e2d36d"><sql:getColumn colName="PARTIAL"/></td>
<td CLASS="BORDER_" align="right"><sql:getColumn colName="NET"/></td>
</tr>
</sql:resultSet>
</sql:preparedStatement>
<%
for(int index=0;index<BankName_list.size();index++){
System.out.println("BankName_list "+BankName_list.get(index));
}
%>
<sql:preparedStatement id="pst" conn="conn">
<sql:query>
SELECT TO_CHAR(SUM(B.GROSS),'99,99,99,99,990.00') GROSS,
TO_CHAR(SUM(B.TDS),'99,99,99,99,990.00') TDS,
TO_CHAR(SUM(B.ADVANCE),'99,99,99,99,990.00') ADVANCE,
TO_CHAR(SUM(B.PARTIAL),'99,99,99,99,990.00') PARTIAL,
TO_CHAR(SUM(B.NET),'99,99,99,99,990.00') NET
FROM VW_VOUCHER_ALLOCATION_DETAIL B
WHERE B.VOUCHER_NO='<%=voucher%>'
AND (B.GROSS>0 OR B.ADVANCE>0 OR B.PARTIAL>0)
</sql:query>
<sql:resultSet id="rs">
<tr style="height:20px">
<td CLASS="BORDER_"> </td>
<td CLASS="BORDER_" align="right"><b>Grand Total </b></td>
<td CLASS="BORDER_" align="right"><b><sql:getColumn colName="GROSS"/></b></td>
<td CLASS="BORDER_" align="right"><b><sql:getColumn colName="TDS"/></b></td>
<td CLASS="BORDER_" align="right"><b><sql:getColumn colName="ADVANCE"/></b></td>
<td CLASS="BORDER_" align="right"><b><sql:getColumn colName="PARTIAL"/></b></td>
<td CLASS="BORDER_" align="right"><b><sql:getColumn colName="NET"/></b></td>
</tr>
</sql:resultSet>
</sql:preparedStatement>
<tr style="height:20px">
<td CLASS="BORDER_"> </td>
<td CLASS="BORDER_" align="right" colspan="2"><b>Adjusted Amount </b></td>
<td CLASS="BORDER_" colspan="5" align="right"><sql:getColumn colName="AMT_ADJUST"/></td>
</tr>
<tr style="height:20px" bgcolor="#c5c5c5">
<td CLASS="BORDER_"> </td>
<td CLASS="BORDER_" align="right" colspan="2"><b>Net Payable Amount </b></td>
<td CLASS="BORDER_" colspan="5" align="right"><b><sql:getColumn colName="AMT_NET"/></b></td>
</tr>
</sql:resultSet>
</sql:preparedStatement>
</table>
</DIV>
<%--------------------------%>
</td>
</tr>
<TFOOT>
<sql:preparedStatement id="pst" conn="conn">
<sql:query>
SELECT DECODE(CNT,1,
C.MAP_1 || ' ' ||
B.VENDOR_NAME,
' '
) DESCR
FROM
(
SELECT A.VOUCHER_NO,COUNT(DISTINCT(VENDOR_ID)) CNT,MAX(A.VENDOR_ID) VENDOR_ID,MAX(A.PAYMENT_MODE) PAYMENT_MODE
FROM DATA_TRAN_BILL A
GROUP BY A.VOUCHER_NO
) A,MAST_VENDOR B,MAST_PAYMENT_MODE C
WHERE A.VENDOR_ID=B.ID
AND A.PAYMENT_MODE=C.ID
AND A.VOUCHER_NO='<%=voucher%>'
</sql:query>
<sql:resultSet id="rs">
<TR>
<TD colspan="3" STYLE="font-size: 13px; "> <sql:getColumn colName="DESCR"/></TD>
</sql:resultSet>
</sql:preparedStatement>
<TD STYLE="font-size: 10px; ">
<DIV STYLE="height:60px; " ID="fix">
<sql:preparedStatement id="pst" conn="conn">
<sql:query>
SELECT DISTINCT V.BANK_NAME,V.ACC_NO,C.DESCR,V.IFSC_NEFT
FROM DATA_TRAN_BILL A,MAST_PAYMENT_MODE C, MAST_VENDOR V
WHERE A.PAYMENT_MODE = C.ID
AND A.VENDOR_ID = V.ID
AND C.DESCR IN ('NEFT','RTGS','RTGS/NEFT')
AND A.VOUCHER_NO = '<%=voucher%>'
</sql:query>
<sql:resultSet id="rs">
<table align="right" border="0" width="70%">
<tr>
<td>Bank Name : </td>
<td><sql:getColumn colName="BANK_NAME"/> </td>
</tr>
<tr>
<td>Account No. : </td>
<td><sql:getColumn colName="ACC_NO"/> </td>
</tr>
<tr>
<td><sql:getColumn colName="DESCR"/> Code : </td>
<td><sql:getColumn colName="IFSC_NEFT"/> </td>
</tr>
</table>
</sql:resultSet>
</sql:preparedStatement>
</DIV>
</TD>
</TR>
</TFOOT>
</table>
<br><br><br>
<table width="793" border="0" cellspacing="0" cellpadding="0">
<tr style="height:15px">
<td colspan="5"> </td>
</tr>
<tr align="center">
<td width="30"> </td>
<td width="153" style="border-top: 1px solid #6e6e6e;">Maker</td>
<td width="500"> </td>
<td width="153" style="border-top: 1px solid #6e6e6e;">Checker</td>
<td width="500"></td>
<td width="153" style="border-top: 1px solid #6e6e6e;">Approver</td>
<td width="30"> </td>
</tr>
</table><BR>
</DIV>
<BR>
</center>
<sql:closeConnection conn="conn"/>
The method println(boolean) in the type PrintStream is not applicable for the arguments
<sql:getColumn colName="SCHEME_DESC"/> is coming as empty here
There in no method is avaialable println with 0-arguments.
It seems you have mixed script lets and jstl tags together.
System.out.println( %><sql:getColumn colName="SCHEME_DESC"/><% ..

Getting this "org.xhtmlrenderer.render.BlockBox cannot be cast to org.xhtmlrenderer.newtable.TableBox" while trying to render a pdf

I am getting this error while I am trying to render a pdf. I am using Nicolas Leroux's PDF module for the play framework.
This is the entire stackstrace: Pastebin. Googling only reveals 4 results. They suggest removing any float properties, and position attributes, which I have removed, jsut to give it a try. I am still facing this problem. Has anyone been able to solve the issue?
EDIT: This is the html that renders the pdf:
#{extends 'main.html' /} #{set title:'Salary Details' /}
<html>
<head>
<title>Employee Name</title>
<style>
body {
font: 9pt Arial, Helvetica, sans-serif;
}
.container {
margin: 0 auto;
width: 1000px;
border: 1px solid black;
padding: 12px;
}
.logoClass {
width: 200px;
height: 85px;;
}
.companyAddressClass {
width: 60%;
margin: 0 auto;
font-size: 17px;
font-weight: bold;
text-align: center;
}
.empClass table {
width: 100%;
border: 1px solid #ccc;
border-collapse: collapse;
margin: 10px 0px;
}
.empClass table th,td {
border: 1px solid #ccc;
padding: 5px 5px;
}
.empClass table th {
background: #f2f2f2;
}
</style>
</head>
<body onload="window.print();">
%{for(int i=0;i<dataList.size ();i=i+1){}%
<div class="container" style="page-break-after:#{if i == dataList.size()-1} avoid;#{/if} #{else} always; #{/else}">
<div class="logoClass"></div>
<div class="companyAddressClass">
${dataList.get(i).distributorName},<br /> ${dataList.get(i).city},<br />
${dataList.get(i).state} <br /> <br /> <span>Payslip for the
month of ${dataList.get(i).salaryMonth}</span>
</div>
<br class="clear" />
<div class="empClass">
<table border="1">
<tr>
<td>Employee No: ${dataList.get(i).employeeNumber}</td>
<td>Location: ${dataList.get(i).location}</td>
</tr>
<tr>
<td>Name: ${dataList.get(i).employeeName}</td>
<td>Salary for the M/O: ${dataList.get(i).salaryMonth}</td>
</tr>
<tr>
<td>Bank Name: ${dataList.get(i).bankName}</td>
<td>Designation: ${dataList.get(i).designation}</td>
</tr>
<tr>
<td>Bank Acc No: ${dataList.get(i).accountNumber}</td>
<td>Join Date: ${dataList.get(i).joinDate}</td>
</tr>
<tr>
<td>PF No: ${dataList.get(i).pfNumber}</td>
<td>Gender: ${dataList.get(i).gender}</td>
</tr>
<tr>
<td>ESI No: ${dataList.get(i).esiNumber}</td>
<td>LOP: ${dataList.get(i).lop}</td>
</tr>
<tr>
<td>PAN No: ${dataList.get(i).panNumber}</td>
<td>Days Worked: ${dataList.get(i).daysWorked}</td>
</tr>
</table>
</div>
<br />
<div class="empClass">
<table border="1">
<tr>
<th colspan="3">Earnings</th>
<th colspan="2">Deductions</th>
</tr>
<tr>
<th align="left">Header</th>
<th align="right">Actual</th>
<th align="right">Paid</th>
<th align="left">Header</th>
<th align="right">Paid</th>
</tr>
<tr>
<td>Basic</td>
<td align="right">${dataList.get(i).basic}</td>
<td align="right">${dataList.get(i).basic}</td>
<td>PF</td>
<td align="right">${dataList.get(i).pf}</td>
</tr>
<tr>
<td>HRA</td>
<td align="right">${dataList.get(i).hra}</td>
<td align="right">${dataList.get(i).hra}</td>
<td>ESICEE</td>
<td align="right">${dataList.get(i).esicee}</td>
</tr>
<tr>
<td>Conveyance Allowance</td>
<td align="right">${dataList.get(i).conveynanceAllowance}</td>
<td align="right">${dataList.get(i).conveynanceAllowance}</td>
<td>ESICEE(PWS)</td>
<td align="right">${dataList.get(i).esiceePWS}</td>
</tr>
<tr>
<td>Medical Allowance</td>
<td align="right">${dataList.get(i).medicalAllowances}</td>
<td align="right">${dataList.get(i).medicalAllowances}</td>
<td>PT</td>
<td align="right">${dataList.get(i).pt}</td>
</tr>
<tr>
<td>Special Allowance</td>
<td align="right">${dataList.get(i).specialAllowance}</td>
<td align="right">${dataList.get(i).specialAllowance}</td>
<td>PT(PWS)</td>
<td align="right">${dataList.get(i).ptPWS}</td>
</tr>
<tr>
<td>Incentives</td>
<td align="right">${dataList.get(i).midMonthAmountPWS}</td>
<td align="right">${dataList.get(i).midMonthAmountPWS}</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Other Allowances</td>
<td align="right">${dataList.get(i).otherAllowance}</td>
<td align="right">${dataList.get(i).otherAllowance}</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan="3" align="right">Total
Earnings:${dataList.get(i).totalEarnings}</td>
<td colspan="2" align="right">Total Deduction
:${dataList.get(i).totalDeduction}</td>
</tr>
<tr>
<td colspan="3"> </td>
<td colspan="2" align="right"><strong>Salary Credited
: ${dataList.get(i).salaryCredited}</strong></td>
</tr>
</table>
<table>
<thead>
<tr>
<th>Position Title</th>
<th>City Name</th>
<th>State Name</th>
</tr>
</thead>
<thead>
<tr>
..
..
..
..
<th>${dataList.get(i).positionTitle}</th>
<th>${dataList.get(i).cityName}</th>
<th>${dataList.get(i).stateName}</th>
</tr>
</thead>
</table>
<br>
<table>
<thead>
<tr>
<th>Some Header</th>
<th>Some Header</th>
<th>Some Header</th>
<th>Some Header</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">Values</td>
..
..
..
..
..
</tr>
</tbody>
</table>
</div>
<div>
<span style="font-size: 15px; font-weight: bold;"> Salary
Credited Amount(In Words): ${dataList.get(i).salaryCreditedInWord} </span>
</div>
</div>
<br />
<br />
%{}}%
</body>
</html>
I am using Windows 7 and Tomcat6 as the testing environment, the same environment that people over here are facing trouble with.
Thanks.
This commit is a fix for your problem. You can download the whole class and put it in your source code, so you haven't to rebuild the library jar.
If you are facing this issue, to fix this just add a span tag inside the td and add the style to that span tag. Example:
<td>
<span style = style="position: absolute;">
</td>
Basically if you add the style to the td, you would get the error because of the bug in fly saucer pdf.

Categories