如何在JSF页面中使用ActiveX控件

KingCobra 2008-08-28
公司的一个遗留项目 要求在jsf 页面取得客户的网卡MAC地址,我用JS调用ActiveX控件的方法在HTML页可以实现,可是到JSF的页面总是出错误
JS代码如下:
<script language="JScript"
event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo">
var macInput = document.getElementById("customer_mac");
macInput.value=unescape(MACAddr);

</script>

<script language="JScript"
event="OnObjectReady(objObject,objAsyncContext)" for="foo">
var tempIp = objObject.IPEnabled;
if(tempIp == true)
{
if(objObject.MACAddress != null ){
MACAddr = objObject.MACAddress;
}
}
</script>

<object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT" ></object>
<object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object>
<script language="JScript">
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>
rockjava 2008-08-28
你要用js这么做的话,那在非IE浏览器的情况下不就失灵了吗?还是用java来读取MAC地址然后显示在JSF页面上
vieri122 2008-08-29
我也有此问题 比方说要在JSF页面用一个activeX的网页视频控件
不知道该如何实现?
KingCobra 2008-08-29
用JAVA读取MAC需要对方的IP或者机器名,用IPconfig 和ARP实现,还有其他办法吗?
这是一个宽带管理系统 用户的 IP是DHCP动态分配的。
kimmking 2008-08-31
报什么错

我们的jsf项目大量使用了activex

---

看看你的
var macInput = document.getElementById("customer_mac");
中的这个customer_mac是不是在jsf页面名字变了
加个forceid
maxwell 2008-09-04
使用activex 和jsf是没有关系的,只要jsp能调用 jsf就可以调用。 顺便关于forceid 问题 :
var macInput = document.getElementById("formId:customer_mac");
在定义的ID前面加上formId就可以了,
KingCobra 2008-09-04
没有错误! 感觉ActiveX控件没起作用!页面代码这样的:
 
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:tr="http://myfaces.apache.org/trinidad"
	xmlns:trh="http://myfaces.apache.org/trinidad/html"
	xmlns:cv="http://sourceforge.net/projects/jsf-comp/clientvalidators"
	xmlns:c="http://java.sun.com/jsp/jstl/core">
<jsp:directive.page contentType="text/html;charset=utf-8" />
<f:view>	
<tr:document title="装机管理" mode="quirks">
<tr:form id="roleForm">
<tr:panelPage>
<tr:messages globalOnly="true" id="stateMessage"></tr:messages>
<tr:panelHeader text="装机完成"> 
<trh:tableLayout borderWidth="0">
<trh:rowLayout>
<tr:outputLabel for="customer_mac" value="客户MAC" />
<tr:inputText value="#{receiptBroadBand.customer.customer_mac}"
		id="customer_mac">
</tr:inputText>
</trh:rowLayout>
</trh:tableLayout>
</tr:panelHeader>
</tr:panelPage>
</tr:form>
<script language="JScript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo">
var userMac = document.getElementById("customer_mac");
userMac.value=unescape(MACAddr);

//document.formbar.submit();
</script>

<script language="JScript" event="OnObjectReady(objObject,objAsyncContext)" for="foo">
if(objObject.IPEnabled == true)
{
if(objObject.MACAddress != null)
MACAddr = objObject.MACAddress;

}
</script>

<object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT"></object>
<object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object>
<script language="JScript">
var service = locator.ConnectServer();
var MACAddr ;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync("foo", "Win32_NetworkAdapterConfiguration");
</script>
		</tr:document>
	</f:view>
</jsp:root>
    

如果把这段JS放在上面 整个页面都不渲染 我自己看了渲染出来的页面 那个Input的ID没有变化。
Global site tag (gtag.js) - Google Analytics