MXML 文件如下
<?xml version="1.0" encoding="utf-8"?>
<mx:Script>
<![CDATA[
import mx.controls.List;
import mx.controls.Alert;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
[Bindable]
public var lis:List = null;
public function gg():void
{
var id:String = testone.text.toString();
h.findById(id);//没有调用到java
mx.controls.Alert.show("123456");
}
public function yy(event:ResultEvent):void
{
lis = event.result as List;
//return lis;
}
]]>
</mx:Script>
<mx:RemoteObject id="h" destination="userService" result="yy(event)"/>
<mx:DataGrid x="100" y="192" id="datagrid" dataProvider="{lis}" fontSize="15">
<mx:columns>
<mx:DataGridColumn headerText="编号" dataField="ID"/>
<mx:DataGridColumn headerText="姓名" dataField="NAME"/>
<mx:DataGridColumn headerText="性别" dataField="SEX"/>
</mx:columns>
</mx:DataGrid>
<mx:ComboBox x="100" y="128" id="cbb"></mx:ComboBox>
<mx:TextInput x="100" y="76" id="testone"/>
<mx:Label x="30" y="78" text="请输入ID:" fontSize="15"/>
<!-- 此处为触发函数-->
<mx:Button x="218" y="343" label="Button" click="gg();"/>
remoting-config.xml如下
<?xml version="1.0" encoding="UTF-8"?>
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="userService">
<properties>
<source>userServiceS</source>
</properties>
</destination>
Spring Application.xml文件如下
value="model.TestUser"/>
<bean id="userServiceS" class="service.ServiceImp">
<property name="userOfSysListDAO" ref="userOfSysListDAO" />
</bean>
现在是调用不了JAVA 不知道什么问题!
后台JAVA 方法
@SuppressWarnings("unchecked")
public List findById(String id) {
System.out.println("flex来调用我了");//打印没有出来
return userOfSysListDAO.findList("from test_user as t where t.id="+id);
}
如果Flex RemoteOjbect和Hibernate+Spring都没有问题的情况下
LCDS整合Spring需要注意
需要手动新建SpringFactory 实现 flex.messaging.FlexFactory 接口
具体代码如下:
[code="java"]
package .;
import flex.messaging.FactoryInstance;
import flex.messaging.FlexFactory;
import flex.messaging.config.ConfigMap;
public class SpringFactory implements FlexFactory {
@Override
public FactoryInstance createFactoryInstance(String id, ConfigMap properties ) {
SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties);
instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));
return instance;
}
@Override
public Object lookup(FactoryInstance inst) {
SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;
return factoryInstance.lookup();
}
@Override
public void initialize(String arg0, ConfigMap arg1) {
}
}
[/code]
新建SpringFacotryInstance extends SpringFacotry
具体代码如下:
[code="java"]
package .;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import flex.messaging.FactoryInstance;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.ServiceException;
public class SpringFactoryInstance extends FactoryInstance {
SpringFactoryInstance(SpringFactory factory, String id, ConfigMap properties)
{
super(factory, id, properties);
}
public Object lookup()
{
ApplicationContext appContext = (WebApplicationContext) flex.messaging.FlexContext.getHttpRequest().getSession() .getServletContext().getAttribute("org.springframework.web.context.WebApplicationContext.ROOT");
String beanName = getSource();
try
{
return appContext.getBean(beanName);
}
catch (NoSuchBeanDefinitionException nexc)
{
nexc.printStackTrace();
ServiceException e = new ServiceException();
throw e;
}
catch (BeansException bexc)
{
ServiceException e = new ServiceException();
e.printStackTrace();
throw e;
}
}
}
[/code]
最后需要在LCDS的service-config.xml文件中
标签之后加入
[code="xml"]
[/code]
这样应该Flex是用RemoteOjbect对象调用JAVA应该就没有问题了。
我们老大是这么跟我讲的,呵呵,
感觉应该是 Hibernate 配置 Spring 出的问题。 Flex 远程对象这快 看着没有什么问题,仔细看一下Spring + Hibernate
你可以这样调整一下, 看你的代码命名来看,应该是一个类似于Demo的一个示例
1.首先你可以先测试Flex的RemoteObject这 看看有什么问题,就是不整合Hibernate+Spring 只是简单调用一个Java方法而已,这个很简单吧,估计你应该有哪个LCDS的Demo 如没有写信给我Email,我发给你,
2.不牵扯Flex,测试Hibernate+Spring是否配置无误,
3.两步 都没有问题,LCDS整合。
如还有问题,请继续问题补充.
Email 忘了留下了 jingfei_cai@126.com
上面貌似写错了
是 SpringFactoryInstance extends FactoryInstance
呵呵