JSF or STRUTS to be used in Presentation layer?

In a project that we are currently doing , we are in a dilemma as to use Struts or JSF as our Presentation tier..we have gone through a lot of documents of pro's and con's of each but are unable to come to a conclusion..If anyone could share his thoughts or experience for that case with us it would be of great help.

I've never tested Struts and JSF for performance. In the many projects I've worked on, I've never found the presentation tier to be the performance bottleneck. When using JSF and Facelets together, your 'pages' are XHTML files which are WAY faster for development because you don't wait for a JSP to compile when testing pages.
Struts, in my opinion, was a great framework but has some quirks which I've never really liked much. I don't like having to extend classes for actions and form beans. I don't like needing a form bean which is similar but different from my model objects (form beans really need to have properties that are strings (because bean properties are set before validation)). Somewhere you often need to copy a form bean into your 'real' model object before you write to the database. I also don't like necessarily having to separate out a form bean and 'action' methods. For example, I ilke to have a simple UserLogin object that has id, username and password properties along with an authenticate() method all together. Struts necessitates a whole log of classes for each page (and lots of configuration if you use tiles templating). Read what the author of Struts has to say about the two technologies:
http://blogs.sun.com/roller/page/craigmcc/20040927
Perhaps your best resource will be the website www.JSFCentral.com It has links to a variety of articles about and tuturials for JSF. Also search the IBM DeveloperWorks website for JSF and you'll find many good articles from IBM people, one of the best is a 4 part series that starts with:
http://www-128.ibm.com/developerworks/java/library/j-jsf1/
You can find more information about Facelets at:
https://facelets.dev.java.net
I'm not sure about WSAD support for JSF. Exadel (www.exadel.com) has an extension for Eclipse that supports Facelets and XHTML file editing and it's available for free.
Also, the book Core JavaServer Faces by David Geary is a really excellent resource.
Cheers, Don

Similar Messages

  • Using jsf with struts

    hi;
    i am trying to understand the proper architecture when using jsf and struts together.
    i think i understand the differences between the technologies . it seems to me that instead of justifying jsf there should be a focus on how the two technologies actually collaborate.
    specifically, i would like to know or see examples of things like replacing the view portion of struts and plugging in the jsf framework instead or how to i replace the struts actions with jsf commands or maybe they are totally different things.
    where can i get information like this?
    thanks.

    At present, i think the best thing to do is to look at the example provided with the struts-faces integration taglib. I don't know any documentation about it.
    http://cvs.apache.org/builds/jakarta-struts/nightly/struts-faces/

  • I am trying to use java  file as Model layer and jsf as presentation layer

    I am trying to use java file as Model layer and jsf as presentation layer and need some help
    I successfully get the value of h:outputText from java file by doing simple binding operation but I am facing problems when I am trying to fill h:dataTable
    I create java file
    package oracle.model;
    import java.sql.;*
    import java.util.;*
    *public class TableBean {*
    Connection con ;
    Statement ps;
    ResultSet rs;
    private List perInfoAll = new ArrayList();
    *public List getperInfoAll() {*
    perInfoAll.add(0,new perInfo("name","username","blablabla"));
    return perInfoAll;
    *public class perInfo {*
    String uname;
    String firstName;
    String lastName;
    *public perInfo(String firstName,String lastName,String uname) {*
    this.uname = uname;
    this.firstName = firstName;
    this.lastName = lastName;
    *public String getUname() {*
    return uname;
    *public String getFirstName() {*
    return firstName;
    *public String getLastName() {*
    return lastName;
    right click on the file and choose 'create data control'
    then i wrote the jsf file:
    *<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>*
    *<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>*
    *<f:view>*
    *<h:dataTable id="dt1" value="#{bindings.perInfoAll}"*
    var="item" bgcolor="#F1F1F1" border="10"
    cellpadding="5" cellspacing="3" rows="4" width="50%"
    dir="LTR" frame="hsides" rules="all"
    *>*
    *<f:facet name="header">*
    *<h:outputText value="This is 'dataTable' demo" id="ot6"/>*
    *</f:facet>*
    *<h:column id="c2">*
    *<f:facet name="header">*
    *<h:outputText value="First Name" id="ot1"/>*
    *</f:facet>*
    *<h:outputText style="" value="#{item.firstName}"*
    id="ot2"/>
    *</h:column>*
    *<h:column id="c4">*
    *<f:facet name="header">*
    *<h:outputText value="Last Name" id="ot9"/>*
    *</f:facet>*
    *<h:outputText value="#{item.lastName}" id="ot8"/>*
    *</h:column>*
    *<h:column id="c3">*
    *<f:facet name="header">*
    *<h:outputText value="Username" id="ot7"/>*
    *</f:facet>*
    *<h:outputText value="#{item.uname}" id="ot4"/>*
    *</h:column>*
    *<f:facet name="footer">*
    *<h:outputText value="The End" id="ot3"/>*
    *</f:facet>*
    *</h:dataTable>*
    *</center>*
    *</af:document>*
    *</f:view>*
    but nothing is appear in my table
    I know that there is something wrong in calling the binding object
    I need help pls and where can i find some help to deal with another tag types
    thanks

    i dragged the "perInfoAll" from my "Data Controls" and choosed adf table (even I know that new table with adf tags well be generated and i want table with jsf tags)
    and this code is generated
    *<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"*
    *"http://www.w3.org/TR/html4/loose.dtd">*
    *<%@ page contentType="text/html;charset=UTF-8"%>*
    *<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>*
    *<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>*
    *<%@ taglib uri="http://xmlns.oracle.com/adf/faces/rich" prefix="af"%>*
    *<f:view>*
    *<af:document id="d1">*
    *<af:messages id="m1"/>*
    *<af:form id="f1">*
    *<af:table value="#{bindings.perInfoAll1.collectionModel}" var="row"*
    *rows="#{bindings.perInfoAll1.rangeSize}"*
    *emptyText="#{bindings.perInfoAll1.viewable ? 'No data to display.' : 'Access Denied.'}"*
    *fetchSize="#{bindings.perInfoAll1.rangeSize}"*
    *rowBandingInterval="0"*
    *selectionListener="#{bindings.perInfoAll1.collectionModel.makeCurrent}"*
    *rowSelection="multiple" id="t1">*
    *<af:column sortProperty="uname" sortable="false"*
    *headerText="#{bindings.perInfoAll1.hints.uname.label}"*
    *id="c1">*
    *<af:inputText value="#{row.bindings.uname.inputValue}"*
    *label="#{bindings.perInfoAll1.hints.uname.label}"*
    *required="#{bindings.perInfoAll1.hints.uname.mandatory}"*
    *columns="#{bindings.perInfoAll1.hints.uname.displayWidth}"*
    *maximumLength="#{bindings.perInfoAll1.hints.uname.precision}"*
    *shortDesc="#{bindings.perInfoAll1.hints.uname.tooltip}"*
    *id="it3">*
    *<f:validator binding="#{row.bindings.uname.validator}"/>*
    *</af:inputText>*
    *</af:column>*
    *<af:column sortProperty="firstName" sortable="false"*
    *headerText="#{bindings.perInfoAll1.hints.firstName.label}"*
    *id="c2">*
    *<af:inputText value="#{row.bindings.firstName.inputValue}"*
    *label="#{bindings.perInfoAll1.hints.firstName.label}"*
    *required="#{bindings.perInfoAll1.hints.firstName.mandatory}"*
    *columns="#{bindings.perInfoAll1.hints.firstName.displayWidth}"*
    *maximumLength="#{bindings.perInfoAll1.hints.firstName.precision}"*
    *shortDesc="#{bindings.perInfoAll1.hints.firstName.tooltip}"*
    *id="it2">*
    *<f:validator binding="#{row.bindings.firstName.validator}"/>*
    *</af:inputText>*
    *</af:column>*
    *<af:column sortProperty="lastName" sortable="false"*
    *headerText="#{bindings.perInfoAll1.hints.lastName.label}"*
    *id="c3">*
    *<af:inputText value="#{row.bindings.lastName.inputValue}"*
    *label="#{bindings.perInfoAll1.hints.lastName.label}"*
    *required="#{bindings.perInfoAll1.hints.lastName.mandatory}"*
    *columns="#{bindings.perInfoAll1.hints.lastName.displayWidth}"*
    *maximumLength="#{bindings.perInfoAll1.hints.lastName.precision}"*
    *shortDesc="#{bindings.perInfoAll1.hints.lastName.tooltip}"*
    *id="it1">*
    *<f:validator binding="#{row.bindings.lastName.validator}"/>*
    *</af:inputText>*
    *</af:column>*
    *</af:table>*
    *</af:form>*
    *</af:document>*
    *</f:view>*
    but when run it i see the following errors
    *Class oracle.adf.model.adapter.bean.BeanDataControl can not access a member of class nl.amis.hrm.EmpManager with modifiers "private"*
    *Object EmpManager of type DataControl is not found.*
    *java.lang.NullPointerException*
    *Class oracle.adf.model.adapter.bean.BeanDataControl can not access a member of class nl.amis.hrm.EmpManager with modifiers "private"*
    *Object EmpManager of type DataControl is not found.*
    *java.lang.NullPointerException*
    :(

  • JSF or Struts

    Hi,
    We have a web application designed using MVC framework. Besides a web view, we now need to support mobile users using WML.
    We are considering JSF and struts (customising struts to handle WML client).
    I have read that JSF supports disparate clients efficiently using RenderKits.
    Can anyone suggest whether JSF has an easy to use WML RenderKit. How does a renderkit work? Is there any good documentation online?
    Is there a Renderkit for WML readily avaialble or will I have to make one? I know there was a link posted in one of the questions in this forum, but it is a dead link.
    Thanks in advance,
    Harsha

    JSF is better than Sturts. ("Until now there is no sucess story on JSF.")
    Becoz, Struts inventor has been hired by SunMicroSystems to work with JSF. The same guy mentioned in an interview, that struts developement will be stopped in future.
    Also..,
    Until now there is no sucess story on JSF. Only time can decide which is best.
    My suggestion is, better spend your time in learning more jsp and servlets specifications, XML/XSLT, JMS, Webservices rather JSF/Struts.
    All these frameworks like JSF/Sturts will depends on your project requirement. There is a nice book and online document in this website about design patterns. Read those things if you have time. You will get good idea.
    Well.., this is all my personal opinions.

  • JSF presentation layer

    hi im new to JSF
    i just want to know when i design a presentation layer tier,
    which situation i need to use .jsp or .jspx..
    i saw some examples using .jsp and some use .jspx..
    i was wondoring why...dont understand
    can anyone explain this and give me some example when using .jsp or .jspx

    I'd maybe seek out a more specific JSF forums on the web somewhere -- the JDeveloper forum here on OTN may be a good place to send this question since they tend to be more specialized in JSF.
    -steve-

  • JSF versus Struts

    Hi, I'm researching JSF and Struts and they look identical. Seems like the developers of JSF just took Struts and changed the wording. What I mean is:
    struts-config.xml became faces-config.xml
    ActionMappings and Actions became NavigationCases and NavigationRules
    FormBeans became ManagedBeans
    MessageResources became MessageBundle
    ActionServlet became FacesServlet (in web.xml)
    Both have validators and converters.
    So am i missing something?
    Also, are there any performance benchmarks that JSF/Struts add to response times?
    Thanks,
    Mike

    I tried out JSF on some small projects and it worked out OK. However, when I tried using JSF on a major project, I got burned. I ended up converting all my JSF work to Struts.
    Before I say what I didn't like about JSF, let me say what I do like. I like how easy it was to associate a button or a link with a method. I like how easy it is to validate input. I liked how easy it is to show or hide components based on boolean expressions. When it comes to these things, I was able to develop code a bit faster with JSF than with Struts.
    However, the negatives were so great that I eventually abandon JSF...
    (1) If you have a graphic artist that creates prototypes using static HTML, converting those prototypes to actual working pages is MUCH easier with Struts tags than with JSF tags. The problem with JSF tags is that you cannot always mix JSF with standard HTML. This is especially true if you are using Tiles. You may end up having to completely rewrite the static HTML tags to their JSF equivalent. This is simply more trouble than it is worth. (There are JSF tag libraries available that act like standard HTML tags, but I found the tags to be buggy and the code simply very cluttered.)
    (2) Creating tables much more complicated that a textbook example can end up being more trouble than it's worth. For example, if you want to create a table where some rows are sub-headers (rows that span all columns and contain a sub-title), then you will end up having to create a custom renderer and a custom tag library. There is a learning curve involved with this. (Even if you are an expert in writing these, you still have extra code that needs to be written.) With Struts, the same thing can be accomplished with some simple logic tags.
    (3) Sometimes, all I really wanted was to iterate through a list of values. JSF does not come with a simple iterate tag. You can loop through your data with a JSTL tag or you can use a datatable or you can create your own tags, but that is extra work. Even if you choose to do any of these, you still cannot reliably mix standard HTML tags with JSF tags.
    (4) Everything in JSF is submitted as a POST. Sometimes, I really needed to use a GET. You can use GETs in JSF, but I found using them to be less than straightforward.
    My advise: If you are building a web app, use a framework that plays well with HTML. (Ultimately, your web app is generating HTML anyway.) If you are building a stand-alone app, use Swing or some language other than Java. If you need your code to run as both, then JSF might be a solution.
    I really wanted JSF to work for me, but I ended up being disappointed.

  • To use two presentation variables based on the period selection in OBIEE

    Dear All,
    I have period prompt in my report, based on the period prompt selection in my report I need to get the start and end dates of the period and apply in the report filter.
    For e.g. Period Name selected in the prompt is "2010 - Q1" (For this Period, Period Start Date = 01/01/2010 and Period End Date is 30/03/2010, which is not going to be displayed in the prompts).
    How can I get the start and end dates of the period into my report filter. I tried using the presentation variable for the period name, but unable to resolve the requirement.
    Your help is highly appreciated.
    Best Regards,
    Rajesh

    Hi Rajesh,
    Create a report A which will give you the period start date and end date and filter it using the period prompt.
    Then filter the main report using the report A start date and end date, using Filter -> Advanced ->Filter based on results of another request .
    Add the report A in separate section on the dashboard along with main report and hide report A section.
    Thanks,
    Vino

  • How to use a presentation variable in filter conditions

    Hi,
    I have set a presentation variable "day" on my dashboard prompt containing a date column. I now need to use this presentation variable in the filter clause to restrict the dates between "day" and sysdate.
    So i apply the following SQL filter:
    where day between '{@variables.day}' and current_date
    But I end up in getting the following error:
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 17001] Oracle Error code: 1861, message: ORA-01861: literal does not match format string at OCI call OCIStmtExecute. [nQSError: 17011] SQL statement execution failed. (HY000)
    I even tried casting the presentation variable to date, but to no avail. Can someone let me know how to specify the date format for the presentation variable.

    If you're a member of ODTUG (or even if not, you can sign up for an associate membership for free) you can download Glenn's presentation from 2009 Kaliedoscope "Little Used Features of Essbase (Like Data Mining and Triggers)" -- there is a section in that presentation on substitution variables -- he does a really good job in showing how this works.
    Go to: www.odtug.com, then Tech Resources, then Essbase/Hyperion, and search for Schwartzberg. Currently it's the ninth presentation on the list -- I think this changes based on popularity of downloads.
    Regards,
    Cameron Lackpour

  • Since I put Mountain Lion on my MacAir my PowerPoint and Keynote Presentations freeze up when I am presenting.  This is so unacceptable when I have 75 - 500 people I am presenting in front of.   I can no longer use my presenter tool either.  Is there help

    Since I put Mountain Lion on my MacAir, my Power Point presentations freeze up when hooked to an LCD projector.  I can no longer use my presenter clicker tool that moves my slides as I walk among my audiences.  This is totally unacceptable in the kind of work that I do.  The Genius Bar person told me to try Keynote but that is even worse.  I wanted to go back to Snow Leopard but because I have backed up my information on an external hard drive she said I cannot go back to Snow Leopard.  Does anyone know of a solution to this problem?  I have several presentations coming up in the next six weeks.

    You need to move to Windows 7, because Apple is now releasing a new OS X version annually and it's playing havoc with people's hardware and software.
    Windows 7 will get support until 2020, that's 8 years of software stability, however you do need to make System Restore disks, boot disk and another on a hard drive to self restore (like TimeMachine is for OS X)
    Apple has no plans to change their currrent behavior as all they care about is selling new hardware with a shiny new OS X verison on it.
    If you wait to move, what will happen is you'll lose that full 8 years and will have to swtich to a newer Windows sooner
    Windows 7 machines are still widely avaialble, despite Windows 8 (a failure) being pushed currently.
    Running three OS X operating systems on one machine is quite a chore reserved for only seasoned computer geeks, then it's only going to last X months as the next OS X version will be released, then the next a year after that.
    Another method would be to get a virtual machine software (virtualbox is free) and install Windows 7 into that to ease your transitition if you cant' spring for a Windows 7 machine, preferablly a tower that will last a long time.
    Here is a method to run Snow Leopard in Parallels, however it's a unapproced hack and not for the comptuer newbie.
    http://forums.macrumors.com/showthread.php?t=1365439
    We have no control over Apple's OS X release cycle, nor the third party developers who make their own decisions what to support.
    Our only choice as users to stop using both products and seek software/hardware stability.

  • Using Adobe Presenter 7 when published to PDF video files do not play just a blank page, any ideas?

    Using Adobe Presenter 7 when published to PDF video files do not just a blank page, any ideas? I am using office 2010 and Adobe Acrobat 9 on my PC any suggestions would be very helpful as the audio and slides work fine though no SWF files work just a blank white screen
    Thanks

    The problem seems to be with Acrobat 9. Can you share any such pdf generated from presenter at [email protected]
    Alternatively, you can try to download Adobe Reader 10 http://get.adobe.com/reader/?promoid=JZEFU and try to view the published output usingthe same.

  • JSF And Struts Integration

    Can any body give some info on integration of JSF to existing struts application

    I describe the main differences between JSF and Struts in this sample Chapter from my JSF book:
    http://www.oreilly.com/catalog/jsvrfaces/chapter/ch01.pdf
    Hope that helps.

  • JSF and Struts - differences and integration goal.

    I am a newbie J2EE developer and I am not clear about main differences between JSF and Struts also I saw couple of articles describing integration between JSF and Struts. Could someone give me an explanation, what the main conceptual differences between those technologies and what's the goal of integration both of them?

    I describe the main differences between JSF and Struts in this sample Chapter from my JSF book:
    http://www.oreilly.com/catalog/jsvrfaces/chapter/ch01.pdf
    Hope that helps.

  • Use of Presentation Variables in Navigated Report Title

    Hi All,
    It's regarding the presentation variable in report title. I have value interaction to another report based on Prompted values. But when we click on the value it will go to another report page and giving the results, but the title view is not changing as per the requested value. The title should change dynamically, but it is showing the P.Variables in place of prompted value.
    Below are the ways i have used the P.Variables:
    @{brand1} at @{customer}, @{sensitivity}% Sensitivity
    @{brand1}{'Prod'} at @{customer}{'CVS'}, @{sensitivity}{'15'}% Sensitivity -----(default values here)
    Version : OBIEE 11.1.1.5.0
    Could you provide me the solution for this issue.
    Thanks in Advance,

    Hi,
    You can use the presentation variable when you are passing the value from the prompt and filtering after
    clicking on the 'GO' or 'APPLY' button. So that assigns one value and is passed in the report in the
    page used.
    What you need to do is you need to have the 'is prompted' for the column used in the title
    or you can make the column is equal to @{pres_var}.
    But still if you dont use the columns in the report and you dont want to filter the report with the title columns
    then you can use narrative view with all the columns used in the title and have 'is prompted' and make its formatting similar to title view and save as a separate report
    And place the narrative view above the report
    Regards,
    MuRam

  • Is it possible to develop struts application without using JPF in workshop 8.1?

    Hi,
    Is it possible to develop application based on struts framework without using
    Java Page Flow in workshop 8.1?
    I developed one application without using JPF , but it is showing some Deployment
    errors.
    rgds,
    girish

    Girish--
    Sure, though, I'd still encourage you to take a look at JPF. :)
    If you remove the JPF runtime files from WEB-INF/, WEB-INF/lib, and JPF specific entries in
    web.xml, you can start defining a struts-config.xml file against the Struts 1.1 runtime in the
    webapp, or you can replace that with a different version as you need. You'll also need to define
    the Struts runtime in web.xml including the servlet, taglibraries, etc.
    One note, the JPF flow view and other JPF specific editors don't work over a normal
    struts-config.xml file.
    Hope that helps...
    Eddie
    Girish wrote:
    Hi,
    Is it possible to develop application based on struts framework without using
    Java Page Flow in workshop 8.1?
    I developed one application without using JPF , but it is showing some Deployment
    errors.
    rgds,
    girish

  • Using Content Presenter inside  Page Template

    Hi all,
    I want to show content of footer from UCM, so I used Content Presenter in the Footer to do it.
    But I only can see the content when the template at the Edit mode and in the Preview Mode or normal mode I can't see anything
    Do you have any suggestion for me
    Thanks a lot!

    You can Add content preseneter and also check whether you hav put all the footer requirements in the UCM and that should be in released mode.
    After adding to the page you can choose the template summary to show in the desired view...
    here is the complete step by step process yo can go through it.
    http://docs.oracle.com/cd/E17904_01/webcenter.1111/e10149/content_cp.htm
    Regards,
    Santosh.

Maybe you are looking for

  • How to add hash table values to SQL Table using Powershell

    Hi, I have sharepoint list with four(column1, column2, column3,column4)columns.I am reading the list column values and adding to hashtable. Now I want to add values from hastable to SQL table with four(column1, column2, colum3,column4)columns using p

  • How can I compose mail messages in a new window?

    Hi, When I click on compose new mail, the editor comes up to write the message as expected. But it is not a page that I can minimise or move around. I cannot flick between the message I am composing and other emails. I cannot see a setting for this,

  • TNS-12541:  TNS: no listener (has to input user name)

    Hi! I have installed Oracle10g successful. I have tested the connection in Net Manager and is successful in condition that I change the user name to system. How can I preset the user name, so that the system will not prompt me for input when I sqlplu

  • Apple iPhone 3G Dock + Apple Composite AV Cable

    Trying to use an Apple Composite AV Cable (MB129LL/B) on a Apple iPhone 3G Dock (MB484G/A) connected to a LCD: No go (regarding video out) so far - is it only me? Has someone got this working together?

  • Apple TV error code ATV-ui511:atv/nextGPS2/mdp

    Have tried all procedures to stream "Emergency" on Netflix but getting error code ATV-ui511:atv/nextGPS2/mdp All other shows in our list play properly and emergency plays on our iPhones and iPad Air using AirPlay. Any ideas on how to solve this?