Help

Controls

PermLinkWikiLink

Built with Seam

You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.

Forum: Seam Users Forum ListTopic List
11. Mar 2008, 18:48 CET | Link

I've been battling with Javascript errors from IE today - which is difficult on the Mac.

After finding this article on Ajaxian I implemented it with Seam + Richfaces. All it does is log client side Javascript errors to your server log. It's not as useful as I thought it would be (still no help with IE's cryptic error messages) but I thought someone might like it.

This code goes into your page (preferably in your global template where you can take it out before go live. Or not):

<head>
<!-- other head stuff -->
<script>
	onerror= function handleErr(msg,url,l)
	{
		logJavaScriptError(msg, url, l);
	}
</script>
</head>

<body>
  <h:form>
    <a:jsFunction action="#{javascriptLogger.error}" name="logJavaScriptError">
      <a:actionparam name="msg" assignTo="#{javascriptLogger.message}"/>
      <a:actionparam name="url" assignTo="#{javascriptLogger.url}"/>
      <a:actionparam name="l" assignTo="#{javascriptLogger.lineNumber}"/>
    </a:jsFunction>
  </h:form>

And a component to log it:

@Name("javascriptLogger")
@BypassInterceptors
public class JavascriptLogger {
  private String message;
  private String url;
  private String lineNumber;

  public void setMessage(String message) {
    this.message = message;
  }

  public void setUrl(String url) {
    this.url = url;
  }

  public void setLineNumber(String lineNumber) {
    this.lineNumber = lineNumber;
  }

  public void error() {
    Log log = Logging.getLog(JavascriptLogger.class);

    log.error("Javascript error: #0 from URL #1 at Line #2", message, url, lineNumber);
  }
}

Cheers,

Damian.