Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > jsf invoke action


Автор: Tony 16.4.2007, 20:20
Привет всем.
Проблема в том как вызвать метод в jsf бине,4ерез ajax или <jsp:forwar="" />.Тоесть вызвать команду не исползуя h:commandLink 
Например в струтсе <jsp:forward page="load_data.do"/>. А как в jsf?

Автор: Maksym 16.4.2007, 20:30
Tony
Всякие valueChangeListeners для компонент тоже не подходят? Action инициирует не пользователь?

Автор: Tony 16.4.2007, 20:54
Я только на4ал разбираться с jsf. Хо4ю понять как вызвать метод в бине по урлу. Например в струтсе пишем патх+.do и отрабатывает акшен. А как в jsf. Хо4у такую штуку сделать. Если урл = / , то вызывается index.jsp. В нём <jsp:forward url="moj metod v bine" />. НО как написать url="moj metod v bine" ?????  smile 

Автор: Tony 17.4.2007, 10:47
Решил 4ерез PhaseListener. Но это не о4ень корректно решает проблему.

Автор: powerOn 17.4.2007, 12:48
Цитата(Tony @  17.4.2007,  11:47 Найти цитируемый пост)
Решил 4ерез PhaseListener. Но это не о4ень корректно решает проблему. 


И как же это получилось?

Автор: Tony 17.4.2007, 16:43
Цитата(powerOn @ 17.4.2007,  12:48)
Цитата(Tony @  17.4.2007,  11:47 Найти цитируемый пост)
Решил 4ерез PhaseListener. Но это не о4ень корректно решает проблему. 


И как же это получилось?

Популейтить данные в бин полу4илось,а вот сам экшен(метод в бине) вызвать.  smile. Так 4то вопрос открыт.

Автор: igor0k 18.4.2007, 19:28
Цитата(Tony @  17.4.2007,  02:20 Найти цитируемый пост)
Привет всем.
Проблема в том как вызвать метод в jsf бине,4ерез ajax или <jsp:forwar="" />.Тоесть вызвать команду не исползуя h:commandLink 
Например в струтсе <jsp:forward page="load_data.do"/>. А как в jsf? 

А создать jsp страничку как обертку для соответствующего метода бина не нравится?

Автор: Tony 18.4.2007, 19:40
Поподробней можно? Нe понятна идея.

Автор: igor0k 19.4.2007, 00:17
Создаете jsp файл, который является jsf страничкой load_data.jsp:
Код

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/html"      prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core"      prefix="f"%>
<f:view>
    <h:outputText  value="#{bean.invokeMethod}" escape="false" />
</f:view>

и уже работете с ним как load_data.jsf или faces/load_data.jsp, как у вас там устроено.

Автор: Tony 19.4.2007, 01:25
invokeMethod u tebja property, a ne method. smile 
Код

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script language="javascript" type="text/javascript" src="prototype.js"></script>
<title>Ajax test</title>
  
    <script type="text/javascript">
        function test(){
            var pars = "firstname=tony";
            new Ajax.Updater('tester', 'kakoj_url_budet ', {method: 'post', parameters: pars});
        }
    </script>

</head>
<body>
    go out
    <input type="button" value="test" onclick="test()"/>
    <div id="tester" >
        test
    </div>


</body>
</html>

Kak vizvat' metod testBean.myMethod + 4toby paramerty zaneslis v propety u bina testBean. 4to vpisat' v parameter kakoj_url_budet ?????
Код

     <navigation-rule>
        <from-view-id>/index.jsf</from-view-id>
        <navigation-case>
            <from-action>#{testBean.myMethod}</from-action>
            <from-outcome>success</from-outcome>
            <to-view-id>/pages/test.jsf</to-view-id>
        </navigation-case>
     </navigation-rule>

Автор: skhilkov 19.4.2007, 08:01
Цитата

Kak vizvat' metod testBean.myMethod 

Например так:
Код

<h:commandButton action="#{testBean.myMethod }" value="Submit" />


Цитата

+ 4toby paramerty zaneslis v propety u bina testBean

это можно так:
Код

<h:inputTextarea id = "text" value="#{ testBean.myProperty}"/>


Цитата

4to vpisat' v parameter kakoj_url_budet ?????


Вот это вот уж не знаю........  smile 

ЗЫ Не забудь все это поместить на форму....... и еще...... с AJAX не работал, поэтому не могу сказать точно, но предполагаю что для JSF есть 
свои средства для работы с ним, и нужно пользовать их......

Автор: Tony 19.4.2007, 10:19
Код

<h:commandButton action="#{testBean.myMethod }" value="Submit" />

Это вызовет проперти(его гетттер меттод) а не простой метод  smile 
я хо4у типа токого урл: bean_name/method?lastname=Bob&firstname=xxxx
I ajax eto ne propblema porobuj iz address bara v brauzere vyzvat' bin kaknibut' tak: bean_name/method?lastname=Bob&firstname=xxxx  smile 

Автор: igor0k 19.4.2007, 21:55
Цитата(Tony @ 19.4.2007,  07:25)
invokeMethod u tebja property, a ne method. smile 

Tony, если Вам религия не позволяет принять, что property, это тоже методы класса, то я могу посоветовать Вам посмотреть следующее:
http://shale.apache.org/

А конкретно:
http://shale.apache.org/shale-remoting/index.html
Как раз, вроде, Ваш случай.

Автор: Tony 19.4.2007, 23:13
Код

... что property, это тоже методы класса...  Крепко  :wink 

http://java.sun.com/docs/books/tutorial/javabeans/properties/properties.html

Нас4ёт shale спасибо. Нo в лом 4итать. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)